Iterazione Simultanea di Sequenze in Python
Per iterare su più sequenze simultaneamente, si può utilizzare la funzione
zip. In questo caso, tutti gli elementi delle sequenze saranno restituiti
sotto forma di tuple, composte da elementi con lo stesso indice.
Esempio
Supponiamo di avere due liste:
lst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3]
Stampiamo i loro elementi a coppie:
for el in zip(lst1, lst2):
print(el)
Risultato dell'esecuzione del codice:
('a', 1)
('b', 2)
('c', 3)
Esempio
È possibile iterare anche su sequenze di tipo diverso. Passiamo un insieme e una tupla attraverso il ciclo
e la funzione zip:
st = {'a', 'b', 'c'}
tlp = (1, 2, 3)
for el in zip(st, tlp):
print(el)
Risultato dell'esecuzione del codice:
('a', 1)
('b', 2)
('c', 3)
Esempio
Se una sequenza è più lunga dell'altra, l'iterazione avverrà fino agli elementi della sequenza più corta:
lst1 = ['a', 'b', 'c', 'd', 'e']
lst2 = [1, 2, 3, 4]
for el in zip(lst1, lst2):
print(el)
Risultato dell'esecuzione del codice:
('a', 1)
('b', 2)
('c', 3)
('d', 4)
Esempio
Con la funzione zip è possibile iterare
anche su tre sequenze. Per farlo, è sufficiente elencarle tutte come parametri della funzione,
separate da virgola:
lst1 = ['a1', 'b1', 'c1']
lst2 = ['a2', 'b2', 'c2']
lst3 = ['a3', 'b3', 'c3']
for el in zip(lst1, lst2, lst3):
print(el)
Risultato dell'esecuzione del codice:
('a1', 'a2', 'a3')
('b1', 'b2', 'b3')
('c1', 'c2', 'c3')
Problemi Pratici
Sono date due liste:
tst1 = [1, 3, 5]
tst2 = [2, 4, 6]
Stampate i loro elementi a coppie sotto forma di tupla.
Sono date due liste:
tst1 = ['a', 'b', 'c']
tst2 = ['d', 'e', 'f']
Ricavate da esse la seguente lista:
['a', '1', 'b', '2', 'c', '3']
Sono date tre liste:
tst1 = [11, 12, 13, 14]
tst2 = [21, 22, 23, 24]
tst3 = [31, 32, 33, 34]
Sommate gli elementi corrispondenti di queste liste e registrate il risultato in una nuova lista. La somma avverrà secondo il seguente principio:
[
11 + 21 + 31,
12 + 22 + 32,
13 + 23 + 33,
14 + 24 + 34,
]