Jak korzystać z funkcji zip() w Pythonie (połącz elementy iterowalne)
Dowiedz się, jak używać funkcji zip() języka Python do łączenia wielu obiektów iteracyjnych równolegle. Opanuj tworzenie słowników, rozpakuj logikę i obsłuż niedopasowania długości.
Przegląd
Podczas iteracji po zbiorach danych często trzeba będzie przetwarzać wiele powiązanych list równolegle. Na przykład parowanie listy nazw użytkowników z listą identyfikatorów użytkowników lub dopasowanie współrzędnych wartości X i Y. Zamiast zagnieżdżonych pętli lub uzyskiwania dostępu do elementów za pomocą liczników indeksujących listy, Python udostępnia elegancką funkcję „zip()”.
Funkcja `zip(*iterables)` przyjmuje wiele obiektów iteracyjnych jako argumenty i agreguje je, zwracając iterator krotek, gdzie i-ta krotka zawiera i-ty element z każdej wejściowej iteracji. Pozwala to łatwo przeglądać dwie lub więcej kolekcji jednocześnie za pomocą pojedynczej pętli „for”.
Domyślnie `zip()` przestaje łączyć, gdy wyczerpany zostanie najkrótszy możliwy do iterowania element wejściowy. Wszelkie pozostałe elementy w dłuższych iteracjach są odrzucane. Jeśli chcesz łączyć elementy w pary aż do wyczerpania najdłuższego iterowalnego elementu, wypełniając brakujące wartości symbolem zastępczym, Python udostępnia funkcję `zip_longest()` w module `itertools` biblioteki standardowej.
Dane wyjściowe kodu i wykonania
Ten skrypt demonstruje równoległą iterację listy, tworzenie słownika przy użyciu zip i obsługę niedopasowań przy użyciu zip_longest.
from itertools import zip_longest
names = ["Alice", "Bob", "Charlie"]
scores = [85, 90, 95]
# 1. Basic Zipping in a loop
print("--- Parallel Iteration ---")
for name, score in zip(names, scores):
print(f"{name} scored {score}")
# 2. Creating a dictionary from two lists
user_dict = dict(zip(names, scores))
print("\nCreated Dictionary:", user_dict)
# 3. Handling unequal list lengths with zip_longest
extra_names = ["Alice", "Bob", "Charlie", "David"]
short_scores = [85, 90]
# Standard zip truncates
print("\nStandard zip output:", list(zip(extra_names, short_scores)))
# zip_longest fills missing values
zipped_long = list(zip_longest(extra_names, short_scores, fillvalue="N/A"))
print("zip_longest output:", zipped_long)--- Parallel Iteration ---
Alice scored 85
Bob scored 90
Charlie scored 95
Created Dictionary: {'Alice': 85, 'Bob': 90, 'Charlie': 95}
Standard zip output: [('Alice', 85), ('Bob', 90)]
zip_longest output: [('Alice', 85), ('Bob', 90), ('Charlie', 'N/A'), ('David', 'N/A')]Wdrażanie krok po kroku
- Przekaż wiele list lub elementów iteracyjnych, które chcesz połączyć, do funkcji zip().
- Rozpakuj wygenerowane krotki w instrukcji pętli for, aby uzyskać czyste równoległe iteracje.
- Konwertuj obiekt zip na słownik, używając dict(zip(keys_list,value_list)) do mapowania.
- Zaimportuj plik itertools.zip_longest, aby połączyć listy o różnej długości bez utraty wartości końcowych.
Często zadawane pytania
Jak „rozpakować” spakowaną sekwencję krotek?
Możesz rozpakować sekwencję z powrotem na osobne listy, używając operatora rozpakowywania *: list(zip(*zipped_tuples)).
Czy zip() duplikuje elementy w pamięci?
Nie, zip() zwraca iterator, który dostarcza elementy na żądanie, dzięki czemu jest niezwykle wydajny pod względem pamięci.
Powiązane tematy
Dowiedz się, jak zapętlać lub iterować po słowniku Pythona. Odkryj metody pętli po kluczach, wartościach i parach klucz-wartość za pomocą przejrzystych, możliwych do uruchomienia przykładów.
Jak połączyć dwie listy w PythoniePoznaj najlepsze sposoby scalania i łączenia dwóch list w Pythonie. Porównaj operator plus, metodę rozszerzenia, rozpakowywanie listy i opcje łańcucha.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Funkcje Pythona
Opanuj funkcje Pythona. Dowiedz się, jak pisać kod wielokrotnego użytku za pomocą def, definiować argumenty, zwracać wartości i rozumieć zakres lokalnie i globalnie.
Ściągawka dotycząca funkcji modułu matematycznego Pythona
Skrócona instrukcja obsługi standardowej biblioteki matematycznej języka Python. Dowiedz się, jak korzystać z funkcji trygonometrycznych, logarytmicznych, zaokrąglających i arytmetycznych.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.