Gelijktijdig itereren over sequenties in Python
Om meerdere sequenties gelijktijdig te itereren,
kan je de functie
zip gebruiken. Hierbij worden alle elementen
van de sequenties weergegeven als
tupels, bestaande uit elementen met
dezelfde index.
Voorbeeld
Stel we hebben twee lijsten:
lst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3]
Laten we hun elementen paarsgewijs weergeven:
for el in zip(lst1, lst2):
print(el)
Resultaat van de uitgevoerde code:
('a', 1)
('b', 2)
('c', 3)
Voorbeeld
Je kunt ook sequenties van verschillende
typen itereren. Laten we een verzameling en een tupel
door de lus en de functie zip halen:
st = {'a', 'b', 'c'}
tlp = (1, 2, 3)
for el in zip(st, tlp):
print(el)
Resultaat van de uitgevoerde code:
('a', 1)
('b', 2)
('c', 3)
Voorbeeld
Als de lengte van de ene sequentie groter is dan de tweede, dan worden ze geïtereerd volgens de elementen van de kortste:
lst1 = ['a', 'b', 'c', 'd', 'e']
lst2 = [1, 2, 3, 4]
for el in zip(lst1, lst2):
print(el)
Resultaat van de uitgevoerde code:
('a', 1)
('b', 2)
('c', 3)
('d', 4)
Voorbeeld
Met de functie zip kun je ook
drie sequenties itereren. Hiervoor sommen we ze
allemaal gescheiden door komma's op in de
parameter van de functie:
lst1 = ['a1', 'b1', 'c1']
lst2 = ['a2', 'b2', 'c2']
lst3 = ['a3', 'b3', 'c3']
for el in zip(lst1, lst2, lst3):
print(el)
Resultaat van de uitgevoerde code:
('a1', 'a2', 'a3')
('b1', 'b2', 'b3')
('c1', 'c2', 'c3')
Praktische opdrachten
Gegeven twee lijsten:
tst1 = [1, 3, 5]
tst2 = [2, 4, 6]
Geef hun elementen paarsgewijs weer als een tupel.
Gegeven twee lijsten:
tst1 = ['a', 'b', 'c']
tst2 = ['d', 'e', 'f']
Verkrijg hieruit de volgende lijst:
['a', '1', 'b', '2', 'c', '3']
Gegeven drie lijsten:
tst1 = [11, 12, 13, 14]
tst2 = [21, 22, 23, 24]
tst3 = [31, 32, 33, 34]
Tel de overeenkomstige elementen van deze lijsten op en schrijf het resultaat in een nieuwe lijst. De optelling verloopt volgens het volgende principe:
[
11 + 21 + 31,
12 + 22 + 32,
13 + 23 + 33,
14 + 24 + 34,
]