Come usare la funzione zip in python

Come usare la funzione zip in python
Questo articolo coprirà una guida sulla funzione "zip" disponibile nella libreria dei moduli standard di Python. Questo metodo consente di combinare e accoppiare elementi di più oggetti iterabili. È quindi possibile eseguire ulteriori logiche su queste coppie. In molti casi, l'uso di una funzione "zip" è molto più efficiente e più pulito rispetto all'utilizzo di più loop "per" più nidificati.

Sulla funzione zip

Come affermato in precedenza, la funzione "zip" viene utilizzata per creare coppie da elementi di più oggetti iterabili. Considera l'esempio seguente per comprendere la sintassi di base e l'utilizzo della funzione Zip:

list1 = ["a", "b", "c"]
List2 = ["Apple", "Ball", "Cat"]
Zipped = Zip (List1, List2)
Stampa (elenco (zippato))

Le prime due affermazioni nel campione di codice sopra definiscono due elenchi contenenti alcuni elementi. Successivamente, la funzione "zip" viene utilizzata passando variabili "List1" ed "List2" come argomenti. Questa è la sintassi principale della funzione "zip". Devi solo passare elenchi o altri iterable ordinati validi come argomenti i cui elementi si desidera combinare. Infine, l'istruzione di stampa viene utilizzata per ottenere l'output della variabile "zippato". Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output:

[('A', 'Apple'), ('B', 'Ball'), ('C', 'Cat')]

Si noti che la funzione "zip" restituisce un tipo di tipo "zip" e non un elenco. Devi convertirlo in un tipo iterabile, come mostrato nell'istruzione di stampa sopra.

In termini semplici, la funzione "zip" raccoglie elementi dello stesso indice da due elenchi e li combina come coppia in una tupla. Quindi il 0 ° elemento di "List1" è combinato con il 0 ° elemento di "List2", il 1 ° elemento di "List1" è combinato con il 1 ° elemento di "List2" e così via. La funzione zip si sposta da sinistra a destra e la tupla contenente elementi accoppiati ha lo stesso indice degli elementi memorizzati in essi.

Utilizzo della zip quando iterables non ha lo stesso numero di elementi

Nell'esempio sopra indicato, entrambi gli elenchi hanno lo stesso numero di elementi. Nel caso in cui tu abbia a che fare con un codice in cui entrambi gli elenchi non hanno lo stesso numero di elementi, la funzione "zip" si fermerà all'ultimo elemento dell'elenco con il numero più basso di elementi.

Nell'esempio seguente, la funzione "zip" si fermerà sull'elemento "C", indipendentemente da "List2" con un altro elemento.

list1 = ["a", "b", "c"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
Zipped = Zip (List1, List2)
Stampa (elenco (zippato))

Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output:

[('A', 'Apple'), ('B', 'Ball'), ('C', 'Cat')]

È possibile utilizzare più di due iterabili quando si utilizza la funzione Zip

Di solito, la funzione "zip" viene utilizzata per confrontare due oggetti iterabili. Tuttavia, puoi passare un numero qualsiasi di iterable come argomenti alla funzione "zip". Il principio di fermarsi all'ultimo elemento dell'elenco più breve sarà ancora applicabile.

list1 = ["a", "b", "c"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
Zipped = Zip (List1, List2, List3)
Stampa (elenco (zippato))

Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output come risultato:

[('A', 'Apple', '5'), ('B', 'Ball', '3')]

Creazione di singoli elenchi da un oggetto tipo zip

Se hai già un oggetto "zip", puoi usarlo per ripopolare singoli elenchi che sono stati usati in precedenza quando la funzione Zip è stata chiamata per la prima volta.

list1 = ["a", "b", "c"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
Zipped = Zip (List1, List2, List3)
l1, l2, l3 = zip (*zippato)
Stampa (elenco (L1), elenco (L2), elenco (L3))

Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output come risultato:

['A', 'B'] ['Apple', 'Ball'] ['5', '3']

Nell'esempio di codice sopra, l'oggetto "zip" viene sgonfiato usando l'operatore "*". I risultati sgonfiati vengono quindi inseriti in un'altra chiamata alla funzione zip che crea elenchi originali. Si noti che potresti non riavere tutti gli elementi negli elenchi originali se sono stati utilizzati elenchi di lunghezza ineguale quando l'oggetto "zip" è stato creato la prima volta.

Usando Zip quando si desidera mantenere gli elementi dal più lungo

In più esempi sopra, potresti aver osservato che la funzione "zip" per impostazione predefinita si ferma all'ultimo elemento dell'iterabile più breve. E se vuoi che continui a ripetere fino a quando non raggiunge l'ultimo elemento del più lungo?

In tal caso, dovrai utilizzare il metodo "zip_longest ()" dal modulo "iTertools" di Python. Funziona come la funzione "zip", con una piccola differenza che si ferma all'ultimo elemento del tipo iterabile più lungo.

Da ITTEROOLS Import Zip_Longest
list1 = ["a", "b", "c"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
Zipped = Zip_Longest (List1, List2, List3)
Stampa (elenco (zippato))

Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output come risultato:

[("A", "Apple", "5"), ("B", "Ball", "3"), ("C", "Cat", None), (Nessuno, "Doll", Nessuno) "

I valori mancanti sono popolati come oggetti di tipo "nessuno". Puoi anche fornire il tuo valore da riempire passando un ulteriore argomento "FillValue" al metodo "Zip_Longest".

Da ITTEROOLS Import Zip_Longest
list1 = ["a", "b", "c"]
List2 = ["Apple", "Ball", "Cat", "Doll"]
list3 = ["5", "3"]
Zipped = Zip_Longest (List1, List2, List3, FillValue = "My_Value")
Stampa (elenco (zippato))

Dopo aver eseguito il campione di codice sopra menzionato, è necessario ottenere il seguente output come risultato:

[("A", "Apple", "5"), ("b", "palla", "3"), ("c", "cat", "my_value"), ("my_value", "bambola ',' my_value ')]

Conclusione

La funzione zip può essere emulata utilizzando alcune istruzioni di loop e condizioni. Tuttavia, aiuta a mantenere il codice organizzato e più pulito rimuovendo verbosità inutili e dichiarazioni ripetitive.