28. Iterace přes několik seznamů současně#
V Pythonu můžeme provádět iterace přes několik seznamů současně pomocí funkce zip()
. Funkce zip()
kombinuje prvky více seznamů do jednoho iterovatelného objektu, který obsahuje n-tice obsahující prvky ze všech vstupních seznamů na stejných pozicích. Poté můžeme tento objekt použít v cyklu for
k iteraci přes všechny seznamy zároveň.
Syntaxe použití zip()
je následující.
for prvek1, prvek2, ... in zip(seznam1, seznam2, ...):
# Kód, který se provádí pro každý prvek z každého seznamu současně
Počet seznamů, které chceme kombinovat, může být libovolný.
Zde je příklad použití zip()
k iteraci přes dva seznamy současně:
seznam1 = [1, 2, 3]
seznam2 = ['a', 'b', 'c']
for cislo, pismeno in zip(seznam1, seznam2):
print(f"Číslo: {cislo}, Písmeno: {pismeno}")
Tento kód projde oba seznamy seznam1
a seznam2
zároveň a vypíše odpovídající páry prvků.
Ukázka s kreslením tří funkcí do tří různých souřadných soustav uvedená v otázce s funkci enumerate()
by se dala pomocí zip()
přepsat následovně.
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0,10)
seznam = [np.sin, np.cos, lambda x:x**2]
fig, ax = plt.subplots(len(seznam),1)
for a,f in zip(ax,seznam):
a.plot(x,f(x))
28.1. Úkol#
Předpřipravená data o studentech jsou v políčku pro odpověď.
jmena = ["Alice", "Martina", "Jirka", "David"]
obory = ["Krajinářství", "Lesnictví", "Krajinářství", "Nábytek"]
body = {
"Alice": [90, 88, 94],
"Martina": [85, 92, 88],
"Lucie": [88, 60, 55],
"Jirka": [78, 90, 85],
"David": [92, 86, 89]
}
Úkolem je vypsat informace o studentech ve formátu, jak je v předepsaných a zapoznámkovaných řádcích s funkcí print
.
Výsledek tedy bude začínat následovně.
Jméno: Alice
Obor: Krajinářství
Body: [90, 88, 94]
Jméno: Martina
Obor: Lesnictví
....atd
Vyjděte z následujícího kódu.
jmena = ["Alice", "Martina", "Jirka", "David"]
obory = ["Krajinářství", "Lesnictví", "Krajinářství", "Nábytek"]
body = {
"Alice": [90, 88, 94],
"Martina": [85, 92, 88],
"Lucie": [88, 60, 55],
"Jirka": [78, 90, 85],
"David": [92, 86, 89]
}
#print(f"Jméno: {jmeno}")
#print(f"Obor: {obor}")
#print(f"Body: {body[jmeno]}")
#print("")