Sarjojen samanaikainen läpikäynti Pythonissa
Käyttääksesi useita sarjoja samanaikaisesti
läpi, voit käyttää funktiota
zip. Tällöin kaikki sarjojen
alkiot tulostuvat tupleina, jotka koostuvat
samassa indeksissä olevista alkioista.
Esimerkki
Oletetaan, että meillä on kaksi listaa:
lst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3]
Tulostetaan niiden alkiot pareittain:
for el in zip(lst1, lst2):
print(el)
Koodin suorituksen tulos:
('a', 1)
('b', 2)
('c', 3)
Esimerkki
Läpikäytävät sarjat voivat olla myös
eri tyyppisiä. Käydään läpi joukko ja tuple
silmukan ja funktion zip avulla:
st = {'a', 'b', 'c'}
tlp = (1, 2, 3)
for el in zip(st, tlp):
print(el)
Koodin suorituksen tulos:
('a', 1)
('b', 2)
('c', 3)
Esimerkki
Jos yhden sarjan pituus on suurempi kuin toisen, niitä käydään läpi pienemmän sarjan alkioiden mukaan:
lst1 = ['a', 'b', 'c', 'd', 'e']
lst2 = [1, 2, 3, 4]
for el in zip(lst1, lst2):
print(el)
Koodin suorituksen tulos:
('a', 1)
('b', 2)
('c', 3)
('d', 4)
Esimerkki
Funktiolla zip voit käydä läpi
myös kolme sarjaa. Tätä varten luettelemme funktion
parametrissa ne kaikki pilkulla erotettuna:
lst1 = ['a1', 'b1', 'c1']
lst2 = ['a2', 'b2', 'c2']
lst3 = ['a3', 'b3', 'c3']
for el in zip(lst1, lst2, lst3):
print(el)
Koodin suorituksen tulos:
('a1', 'a2', 'a3')
('b1', 'b2', 'b3')
('c1', 'c2', 'c3')
Käytännön tehtävät
Annettu kaksi listaa:
tst1 = [1, 3, 5]
tst2 = [2, 4, 6]
Tulosta niiden alkiot pareittain tupleina.
Annettu kaksi listaa:
tst1 = ['a', 'b', 'c']
tst2 = ['d', 'e', 'f']
Hanki niistä seuraava lista:
['a', '1', 'b', '2', 'c', '3']
Annettu kolme listaa:
tst1 = [11, 12, 13, 14]
tst2 = [21, 22, 23, 24]
tst3 = [31, 32, 33, 34]
Laske vastaavien alkioiden summa näistä listoista ja kirjoita tulos uuteen listaan. Summaus tapahtuu seuraavan periaatteen mukaan:
[
11 + 21 + 31,
12 + 22 + 32,
13 + 23 + 33,
14 + 24 + 34,
]