Come usare la funzione Zip in Python

How Use Zip Function Python



Questo articolo tratterà una guida sulla funzione zip disponibile nella libreria di moduli standard di Python. Questo metodo consente di combinare e accoppiare elementi di più oggetti iterabili. È quindi possibile eseguire ulteriore logica su queste coppie. In molti casi, l'utilizzo di una funzione zip è molto più efficiente e pulito rispetto all'utilizzo di più cicli for nidificati.

Informazioni 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']
lista2= ['Mela', 'sfera', 'gatto']
zippato= cerniera lampo(list1,lista2)
Stampa (elenco(zippato))

Le prime due istruzioni nell'esempio di codice precedente definiscono due elenchi contenenti alcuni elementi. Successivamente, la funzione zip viene utilizzata passando le variabili list1 e list2 come argomenti. Questa è la sintassi principale della funzione zip. Devi solo passare elenchi o altri iterabili ordinati validi come argomenti di cui vuoi combinare gli elementi. Infine, l'istruzione print viene utilizzata per ottenere l'output della variabile zippata. Dopo aver eseguito l'esempio di codice sopra menzionato, dovresti ottenere il seguente output:



[('a', 'mela'), ('b', 'palla'), ('c', 'gatto')]

Nota che la funzione zip restituisce un oggetto di tipo zip e non un elenco. Devi convertirlo in un tipo iterabile, come mostrato nell'istruzione print sopra.



In termini semplici, la funzione zip preleva elementi dello stesso indice da due elenchi e li combina come coppia in una tupla. Quindi l'elemento 0 di lista1 è combinato con l'elemento 0 di lista2, il primo elemento di lista1 è combinato con il primo elemento di lista2 e così via. La funzione Zip si sposta da sinistra a destra e la tupla contenente gli elementi accoppiati ha lo stesso indice degli elementi in essi memorizzati.





Usare Zip quando gli Iterable non hanno lo stesso numero di elementi

Nell'esempio sopra riportato, entrambe le liste hanno lo stesso numero di elementi. Nel caso in cui hai a che fare con un codice in cui entrambe le liste non hanno lo stesso numero di elementi, la funzione zip si fermerà all'ultimo elemento della lista con il minor numero di elementi.

Nell'esempio seguente, la funzione zip si fermerà all'elemento c, indipendentemente dal fatto che list2 abbia un elemento in più.



list1= ['a', 'B', 'C']
lista2= ['Mela', 'sfera', 'gatto', 'Bambola']
zippato= cerniera lampo(list1,lista2)
Stampa (elenco(zippato))

Dopo aver eseguito l'esempio di codice sopra menzionato, dovresti ottenere il seguente output:

[('a', 'mela'), ('b', 'palla'), ('c', 'gatto')]

È 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 iterabili come argomenti alla funzione zip. Il principio di fermarsi all'ultimo elemento dell'elenco più breve sarà ancora applicabile.

list1= ['a', 'B', 'C']
lista2= ['Mela', 'sfera', 'gatto', 'Bambola']
lista3= ['5', '3']
zippato= cerniera lampo(list1,lista2,lista3)
Stampa (elenco(zippato))

Dopo aver eseguito l'esempio di codice sopra menzionato, dovresti ottenere il seguente output come risultato:

[('a', 'mela', '5'), ('b', 'palla', '3')]

Creazione di elenchi individuali da un oggetto di tipo zip

Se si dispone già di un oggetto zip, è possibile utilizzarlo per ripopolare i singoli elenchi utilizzati in precedenza quando è stata chiamata per la prima volta la funzione zip.

list1= ['a', 'B', 'C']
lista2= ['Mela', 'sfera', 'gatto', 'Bambola']
lista3= ['5', '3']
zippato= cerniera lampo(list1,lista2,lista3)
l1,l2,l3= cerniera lampo(* zippato)
Stampa (elenco(l1), elenco(l2), elenco(l3))

Dopo aver eseguito l'esempio di codice sopra menzionato, dovresti ottenere il seguente output come risultato:

['a', 'b'] ['mela', 'palla'] ['5', '3']

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

Utilizzo di Zip quando si desidera mantenere gli elementi dal più lungo iterabile

In più esempi sopra, potresti aver notato che la funzione zip per impostazione predefinita si ferma all'ultimo elemento dell'iterabile più breve. Cosa succede se vuoi che continui a scorrere fino a raggiungere l'ultimo elemento dell'iterabile più lungo?

In tal caso, dovrai usare il metodo zip_longest() dal modulo itertools di Python. Funziona allo stesso modo della funzione zip, con una piccola differenza che si ferma all'ultimo elemento del tipo iterabile più lungo.

a partire dal itertools importarezip_longest
list1= ['a', 'B', 'C']
lista2= ['Mela', 'sfera', 'gatto', 'Bambola']
lista3= ['5', '3']
zippato=zip_longest(list1,lista2,lista3)
Stampa (elenco(zippato))

Dopo aver eseguito l'esempio di codice sopra menzionato, dovresti ottenere il seguente output come risultato:

[('a', 'apple', '5'), ('b', 'palla', '3'), ('c', 'gatto', Nessuno), (Nessuno, 'bambola', Nessuno) ]

I valori mancanti vengono popolati come oggetti di tipo Nessuno. Puoi anche fornire il tuo valore da riempire passando un argomento fillvalue extra al metodo zip_longest.

a partire dal itertools importarezip_longest
list1= ['a', 'B', 'C']
lista2= ['Mela', 'sfera', 'gatto', 'Bambola']
lista3= ['5', '3']
zippato=zip_longest(list1,lista2,lista3,valore di riempimento='mio_valore')
Stampa (elenco(zippato))

Dopo aver eseguito l'esempio di codice sopra menzionato, dovresti ottenere il seguente output come risultato:

[('a', 'mela', '5'), ('b', 'palla', '3'), ('c', 'gatto', 'mio_valore'), ('mio_valore', 'bambola ', 'mio_valore')]

Conclusione

La funzione Zip può essere emulata utilizzando alcuni cicli e dichiarazioni di condizioni. Tuttavia, aiuta a mantenere il codice organizzato e pulito rimuovendo la verbosità non necessaria e le istruzioni ripetitive.