zip()

Łączy kilka kolekcji w pary (lub krotki) odpowiadających sobie elementów.

Zwraca
Iterator krotek.
Na tej stronie

Przykład

#
Python
names = ["Ania", "Kuba", "Ola"]
scores = [92, 78, 85]

for name, score in zip(names, scores):
    print(f"{name}: {score}")

print(dict(zip(names, scores)))
Wynikzapisany wynik, możesz go sprawdzić
Ania: 92
Kuba: 78
Ola: 85
{'Ania': 92, 'Kuba': 78, 'Ola': 85}

Definicja i zastosowanie

#

Funkcja zip() przechodzi równolegle po kilku kolekcjach i zwraca krotki z elementów na tych samych pozycjach: pierwsza krotka zawiera pierwsze elementy, druga drugie i tak dalej.

Domyślnie kończy się na najkrótszej kolekcji, a nadmiarowe elementy dłuższych są pomijane. Od Pythona 3.10 parametr strict=True zgłosi błąd, gdy długości się różnią.

Typowe zastosowania to pętla po dwóch listach naraz, budowanie słownika dict(zip(klucze, wartosci)) i „odwracanie” listy par przez zip(*pary).

Składnia

#
Składnia
zip(*iterables, strict=False)

Parametry

#
  • *iterables

    kolekcje

    Kolekcje do połączenia.
  • strict

    bool, domyślnie False

    Gdy True, różne długości zgłaszają ValueError.

Więcej przykładów

#
Różne długości i odwracanie par
Python
print(list(zip([1, 2, 3], ["a", "b"])))

pairs = [("html", 11), ("css", 9)]
courses, modules = zip(*pairs)
print(courses, modules)
Wynikzapisany wynik, możesz go sprawdzić
[(1, 'a'), (2, 'b')]
('html', 'css') (11, 9)

Dobre praktyki

#
  • Gdy listy powinny mieć równą długość, użyj zip(..., strict=True), żeby wychwycić błędy w danych.
  • Do pełnego przejścia po listach różnej długości służy itertools.zip_longest().

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.