Pitone

Come usare la funzione Zip in Python

Come usare la funzione Zip in 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:

lista1 = ["a", "b", "c"]
lista2 = ["mela", "palla", "gatto"]
zippato = zip(lista1, lista2)
stampa (lista (zippata))

Le prime due istruzioni nell'esempio di codice sopra definiscono due elenchi contenenti alcuni elementi. Successivamente, viene utilizzata la funzione "zip" 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 menzionato sopra, dovresti ottenere il seguente output:

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

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

In parole povere, la funzione "zip" preleva elementi dello stesso indice da due elenchi e li combina come coppia in una tupla. Quindi lo 0° elemento di “lista1” è combinato con lo 0° elemento di “lista2”, il 1° elemento di “lista1” è combinato con il 1° 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 tu abbia 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ù.

lista1 = ["a", "b", "c"]
list2 = ["mela", "palla", "gatto", "bambola"]
zippato = zip(lista1, lista2)
stampa (lista (zippata))

Dopo aver eseguito l'esempio di codice menzionato sopra, 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.

lista1 = ["a", "b", "c"]
list2 = ["mela", "palla", "gatto", "bambola"]
lista3 = ["5", "3"]
zippato = zip(lista1, lista2, lista3)
stampa (lista (zippata))

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.

lista1 = ["a", "b", "c"]
list2 = ["mela", "palla", "gatto", "bambola"]
lista3 = ["5", "3"]
zippato = zip(lista1, lista2, lista3)
l1, l2, l3 = zip(*zip)
print (lista(l1), lista(l2), lista(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 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 del più breve iterabile. E se volessi che continui a scorrere fino a raggiungere l'ultimo elemento dell'iterabile più lungo??

In tal caso, dovrai utilizzare 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.

da itertools import zip_longest
lista1 = ["a", "b", "c"]
list2 = ["mela", "palla", "gatto", "bambola"]
lista3 = ["5", "3"]
zippato = zip_longest(list1, list2, list3)
stampa (lista (zippata))

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".

da itertools import zip_longest
lista1 = ["a", "b", "c"]
list2 = ["mela", "palla", "gatto", "bambola"]
lista3 = ["5", "3"]
zippato = zip_longest(list1, list2, list3, fillvalue="my_value")
stampa (lista (zippata))

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.

Il pulsante centrale del mouse non funziona in Windows 10
Il tasto centrale del mouse ti aiuta a scorrere lunghe pagine web e schermate con molti dati. Se si ferma, finirai per usare la tastiera per lo scorri...
Come cambiare i pulsanti sinistro e destro del mouse su PC Windows 10
È abbastanza normale che tutti i mouse dei computer siano progettati ergonomicamente per gli utenti destrimani. Ma sono disponibili dispositivi mouse ...
Emula i clic del mouse passando il mouse utilizzando il mouse senza clic in Windows 10
L'uso di un mouse o di una tastiera nella postura sbagliata di un uso eccessivo può causare molti problemi di salute, tra cui tensione, sindrome del t...