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:

pythonlst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3]

Tulostetaan niiden alkiot pareittain:

pythonfor el in zip(lst1, lst2):
  print(el)

Koodin suorituksen tulos:

python('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:

pythonst = {'a', 'b', 'c'}
tlp = (1, 2, 3)

for el in zip(st, tlp):
  print(el)

Koodin suorituksen tulos:

python('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:

pythonlst1 = ['a', 'b', 'c', 'd', 'e']
lst2 = [1, 2, 3, 4]

for el in zip(lst1, lst2):
  print(el)

Koodin suorituksen tulos:

python('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:

pythonlst1 = ['a1', 'b1', 'c1']
lst2 = ['a2', 'b2', 'c2']
lst3 = ['a3', 'b3', 'c3']

for el in zip(lst1, lst2, lst3):
  print(el)

Koodin suorituksen tulos:

python('a1', 'a2', 'a3')
('b1', 'b2', 'b3')
('c1', 'c2', 'c3')

Käytännön tehtävät

Задание 1

Annettu kaksi listaa:

pythontst1 = [1, 3, 5]
tst2 = [2, 4, 6]

Tulosta niiden alkiot pareittain tupleina.

Задание 2

Annettu kaksi listaa:

pythontst1 = ['a', 'b', 'c']
tst2 = ['d', 'e', 'f']

Hanki niistä seuraava lista:

python['a', '1', 'b', '2', 'c', '3']
Задание 3

Annettu kolme listaa:

pythontst1 = [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:

python[
  11 + 21 + 31,
  12 + 22 + 32,
  13 + 23 + 33,
  14 + 24 + 34,
]