Iterarea simultană a secvențelor în Python
Pentru a itera simultan mai multe
secvențe, poți folosi funcția
zip. În acest caz, toate elementele
secvențelor vor fi afișate
sub formă de tupluri, formate din elemente cu
același index.
Exemplu
Să presupunem că avem două liste:
lst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3]
Să afișăm elementele lor pereche:
for el in zip(lst1, lst2):
print(el)
Rezultatul codului executat:
('a', 1)
('b', 2)
('c', 3)
Exemplu
Poți itera și secvențe de
tipuri diferite. Să trecem prin buclă
și funcția zip o mulțime și un tuplu:
st = {'a', 'b', 'c'}
tlp = (1, 2, 3)
for el in zip(st, tlp):
print(el)
Rezultatul codului executat:
('a', 1)
('b', 2)
('c', 3)
Exemplu
Dacă lungimea unei secvențe este mai mare decât a celei de-a doua, atunci ele vor fi iterate după elementele celei mai mici:
lst1 = ['a', 'b', 'c', 'd', 'e']
lst2 = [1, 2, 3, 4]
for el in zip(lst1, lst2):
print(el)
Rezultatul codului executat:
('a', 1)
('b', 2)
('c', 3)
('d', 4)
Exemplu
Cu funcția zip poți itera
și trei secvențe. Pentru aceasta, în
parametrii funcției le enumerăm pe toate prin
virgulă:
lst1 = ['a1', 'b1', 'c1']
lst2 = ['a2', 'b2', 'c2']
lst3 = ['a3', 'b3', 'c3']
for el in zip(lst1, lst2, lst3):
print(el)
Rezultatul codului executat:
('a1', 'a2', 'a3')
('b1', 'b2', 'b3')
('c1', 'c2', 'c3')
Probleme practice
Sunt date două liste:
tst1 = [1, 3, 5]
tst2 = [2, 4, 6]
Afișați elementele lor pereche sub formă de tuplu.
Sunt date două liste:
tst1 = ['a', 'b', 'c']
tst2 = ['d', 'e', 'f']
Obțineți din ele următoarea listă:
['a', '1', 'b', '2', 'c', '3']
Sunt date trei liste:
tst1 = [11, 12, 13, 14]
tst2 = [21, 22, 23, 24]
tst3 = [31, 32, 33, 34]
Adunați elementele corespunzătoare ale acestor liste și scrieți rezultatul într-o listă nouă. Sumarea va avea loc după următorul principiu:
[
11 + 21 + 31,
12 + 22 + 32,
13 + 23 + 33,
14 + 24 + 34,
]