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 .

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *