Come comprimere due elenchi in python
Spesso potresti essere interessato a comprimere (o “unire”) due elenchi in Python. Fortunatamente, questo è facile da fare utilizzando la funzione zip().
Questo tutorial mostra diversi esempi di utilizzo pratico di questa funzione.
Esempio 1: comprimere due elenchi di uguale lunghezza in un unico elenco
La seguente sintassi mostra come comprimere due elenchi di uguale lunghezza in uno solo:
#define list a and list b a = ['a', 'b', 'c'] b = [1, 2, 3] #zip the two lists together into one list list( zip (a,b)) [('a', 1), ('b', 2), ('c', 3)]
Esempio 2: comprimere due elenchi di uguale lunghezza in un dizionario
La seguente sintassi mostra come comprimere due elenchi di uguale lunghezza in un dizionario:
#define list of keys and list of values keys = ['a', 'b', 'c'] values = [1, 2, 3] #zip the two lists together into one dictionary dict( zip (keys, values)) {'a': 1, 'b': 2, 'c': 3}
Esempio 3: comprimere due elenchi di lunghezza diversa
Se i tuoi due elenchi hanno lunghezze diverse, zip() verrà troncato alla lunghezza dell’elenco più breve:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together into one list list( zip (a,b)) [('a', 1), ('b', 2), ('c', 3)]
Se vuoi evitare che zip() venga troncato alla lunghezza dell’elenco più breve, puoi invece utilizzare la funzione zip_longest() dalla libreria itertools .
Per impostazione predefinita, questa funzione compila “Nessuno” per i valori mancanti:
from itertools import zip_longest #define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together without truncating to length of shortest list list( zip_longest (a, b)) [('a', 1), ('b', 2), ('c', 3), ('d', None)]
Tuttavia, puoi utilizzare l’argomento fillvalue per specificare un valore di riempimento diverso da utilizzare:
#define list a and list b a = ['a', 'b', 'c', 'd'] b = [1, 2, 3] #zip the two lists together, using fill value of '0' list( zip_longest (a, b, fillvalue= 0 )) [('a', 1), ('b', 2), ('c', 3), ('d', 0)]
Puoi trovare la documentazione completa per la funzione zip_longest() qui .