Jednoczesne iterowanie po sekwencjach w Pythonie
Aby iterować po wielu
sekwencjach jednocześnie, można użyć funkcji
zip. W tym przypadku wszystkie elementy
sekwencji będą wyświetlane w
postaci krotek, składających się z elementów z
takim samym indeksem.
Przykład
Załóżmy, że mamy dwie listy:
lst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3]
Wyświetlmy ich elementy parami:
for el in zip(lst1, lst2):
print(el)
Wynik wykonanego kodu:
('a', 1)
('b', 2)
('c', 3)
Przykład
Można iterować również po sekwencjach
różnych typów. Przepuśćmy przez pętlę
i funkcję zip zbiór i krotkę:
st = {'a', 'b', 'c'}
tlp = (1, 2, 3)
for el in zip(st, tlp):
print(el)
Wynik wykonanego kodu:
('a', 1)
('b', 2)
('c', 3)
Przykład
Jeśli długość jednej sekwencji jest większa niż drugiej, to iterowanie będzie się odbywać po elementach krótszej:
lst1 = ['a', 'b', 'c', 'd', 'e']
lst2 = [1, 2, 3, 4]
for el in zip(lst1, lst2):
print(el)
Wynik wykonanego kodu:
('a', 1)
('b', 2)
('c', 3)
('d', 4)
Przykład
Za pomocą funkcji zip można iterować
również po trzech sekwencjach. W tym celu w
parametrach funkcji wymieniamy je wszystkie po
przecinku:
lst1 = ['a1', 'b1', 'c1']
lst2 = ['a2', 'b2', 'c2']
lst3 = ['a3', 'b3', 'c3']
for el in zip(lst1, lst2, lst3):
print(el)
Wynik wykonanego kodu:
('a1', 'a2', 'a3')
('b1', 'b2', 'b3')
('c1', 'c2', 'c3')
Zadania praktyczne
Dane są dwie listy:
tst1 = [1, 3, 5]
tst2 = [2, 4, 6]
Wyświetl ich elementy parami w postaci krotki.
Dane są dwie listy:
tst1 = ['a', 'b', 'c']
tst2 = ['d', 'e', 'f']
Otrzymaj z nich następującą listę:
['a', '1', 'b', '2', 'c', '3']
Dane są trzy listy:
tst1 = [11, 12, 13, 14]
tst2 = [21, 22, 23, 24]
tst3 = [31, 32, 33, 34]
Dodaj odpowiednie elementy tych list i zapisz wynik w nowej liście. Dodawanie będzie przebiegać według następującej zasady:
[
11 + 21 + 31,
12 + 22 + 32,
13 + 23 + 33,
14 + 24 + 34,
]