Uno dei maggiori vantaggi di Python è l'ampio insieme di strumenti che fornisce per lavorare con i suoi tipi di dati. Quando si lavora con diverse liste, a volte è necessario iterare su di esse ed eseguire alcune operazioni basate sui valori di tutte le liste. Questo può essere fatto iterando sugli indici e poi accedendo agli elementi, oppure utilizzando la funzione incorporata zip.
heights = [180, 190, 178]
weights = [89, 92, 77]
for i in range(len(heights)):
h, w = heights[i], weights[i]
print(h, '=>', w)
heights = [180, 190, 178]
weights = [89, 92, 77]
for h, w in zip(heights, weights):
print(h, '=>', w)
La funzione zip crea tuple dagli elementi delle liste che le vengono passate. Può gestire un numero arbitrario di liste. Quindi, possiamo avere zip(list1, list2, list3, ..., listn). Creerà tuple, ciascuna contenente n elementi se ci sono n liste passate a zip.
Nota che "zippa" gli elementi fino alla lista più corta. Quindi, se forniamo due liste in cui una è più corta dell'altra, gli ultimi elementi extra della seconda saranno ignorati.
Se vogliamo essere rigorosi e non permettere il taglio delle liste più lunghe, possiamo dire a Python di generare un errore se ciò accade fornendo l'argomento aggiuntivo strict=True:
heights = [180, 190]
names = ['Bob', 'Liza', 'Anna']
for h, name in zip(heights, names, strict=True):
print(name, '=>', h)
# ValueError: zip() argument 2 is longer than argument 1
Sfida
L'input contiene 3 liste, ciascuna su una linea separata. Gli elementi delle liste sono separati da uno spazio. È garantito che le liste abbiano lo stesso numero di elementi.
Il programma deve stampare una nuova lista che contiene il prodotto di queste 3 liste.