Ce face zip()
zip() ia câte un element din fiecare colecție primită și le pune împreună într-un tuplu: primul cu primul, al doilea cu al doilea și așa mai departe. Se oprește la cea mai scurtă colecție.
Din Python 3.10, strict=True aruncă ValueError dacă colecțiile au lungimi diferite, ca să nu pierzi date fără să observi. Pentru a completa colecțiile scurte, folosește itertools.zip_longest().
Parametri
| Parametru | Descriere |
|---|---|
*iterabile |
Două sau mai multe colecții. |
strict |
Opțional (Python 3.10+). Dacă este True, lungimile diferite dau eroare. |
Ce returnează
Un obiect zip care produce tupluri. Îl poți transforma în listă sau dicționar.
Exemple
Exemplul 1: Două liste în paralel
nume = ["Ana", "Mihai", "Ioana"]
note = [9, 7, 10]
for elev, nota in zip(nume, note):
print(f"{elev}: {nota}")
Rezultat
Ana: 9
Mihai: 7
Ioana: 10
Exemplul 2: Dicționar din două liste și „dezarhivare”
zile = ["luni", "marți", "miercuri"]
temperaturi = [18, 21, 19]
print(dict(zip(zile, temperaturi)))
perechi = [("a", 1), ("b", 2), ("c", 3)]
litere, cifre = zip(*perechi)
print(litere, cifre)
Rezultat
{'luni': 18, 'marți': 21, 'miercuri': 19}
('a', 'b', 'c') (1, 2, 3)
Exemplul 3: Lungimi diferite
print(list(zip([1, 2, 3], ["x", "y"])))
try:
list(zip([1, 2, 3], ["x", "y"], strict=True))
except ValueError as eroare:
print("Eroare:", eroare)
Rezultat
[(1, 'x'), (2, 'y')]
Eroare: zip() argument 2 is shorter than argument 1
Greșeli frecvente
- Nu observi că o listă este mai scurtă și pierzi ultimele elemente din cealaltă. Folosește
strict=Truesauitertools.zip_longest(). - Parcurgi același obiect
zipde două ori. A doua oară este gol, pentru că este un iterator; transformă-l în listă dacă ai nevoie de el de mai multe ori.
Comenzi înrudite
enumerate(): Parcurge o colecție și dă, pentru fiecare element, și poziția lui.dict (dicționare): Dicționarul păstrează perechi cheie: valoare și găsește rapid valoarea după cheie.itertools.zip_longest(): Ca zip(), dar continuă până la cea mai lungă colecție, completând golurile.map(): Aplică o funcție fiecărui element dintr-o colecție.