So verwenden Sie die Funktion zip() in Python (Iterables kombinieren)
Erfahren Sie, wie Sie mit der Funktion zip() von Python mehrere Iterables parallel kombinieren. Meistern Sie die Erstellung von Wörterbüchern, entpacken Sie die Logik und behandeln Sie Längenkonflikte.
Übersicht
Bei der Iteration über Datensätze müssen Sie häufig mehrere Themenlisten parallel verarbeiten. Beispielsweise können Sie eine Liste von Benutzernamen mit einer Liste von Benutzer-IDs koppeln oder die Koordinaten von X- und Y-Werten abgleichen. Anstelle verschachtelter Schleifen oder des Zugriffs auf Elemente mithilfe von Listenindizierungszählern bietet Python die elegante Funktion „zip()“.
Die Funktion „zip(*iterables)“ nimmt mehrere Iterables als Argumente und aggregiert sie und gibt einen Iterator von Tupeln zurück, wobei das i-te Tupel das i-te Element von jedem der eingegebenen Iterables enthält. Auf diese Weise können Sie problemlos zwei oder mehr Sammlungen gleichzeitig mit einer einzigen „for“-Schleife durchlaufen.
Standardmäßig stoppt „zip()“ die Kombination, wenn die kürzeste iterierbare Eingabemenge erschöpft ist. Alle verbleibenden Elemente in den längeren Iterables werden verworfen. Wenn Sie Elemente koppeln möchten, bis die längste Iterierbarkeit erschöpft ist und fehlende Werte mit einem Platzhalter füllen möchten, stellt Python „zip_longest()“ im „itertools“-Modul der Standardbibliothek bereit.
Code- und Ausführungsausgabe
Dieses Skript demonstriert die parallele Listeniteration, das Erstellen eines Wörterbuchs mit zip und die Behandlung von Nichtübereinstimmungen mit 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')]Schrittweise Umsetzung
- Übergeben Sie die mehreren Listen oder Iterables, die Sie kombinieren möchten, an die Funktion zip().
- Entpacken Sie die generierten Tupel in einer for-Schleifenanweisung für saubere parallele Iterationen.
- Konvertieren Sie das Zip-Objekt in ein Wörterbuch, indem Sie dict(zip(keys_list, Values_list)) für die Zuordnung verwenden.
- Importieren Sie itertools.zip_longest, um Listen ungleicher Länge zu kombinieren, ohne Endwerte zu verlieren.
Häufig gestellte Fragen
Wie „entpacke“ ich eine komprimierte Folge von Tupeln?
Mit dem Entpackoperator *: list(zip(*zipped_tuples)) können Sie eine Sequenz wieder in separate Listen entpacken.
Dupliziert zip() die Elemente im Speicher?
Nein, zip() gibt einen Iterator zurück, der Elemente bei Bedarf liefert, was ihn äußerst speichereffizient macht.
Verwandte Themen
Erfahren Sie, wie Sie ein Python-Wörterbuch in einer Schleife durchlaufen oder iterieren. Entdecken Sie Methoden zum Durchlaufen von Schlüsseln, Werten und Schlüssel-Wert-Paaren anhand sauberer, ausführbarer Beispiele.
So führen Sie zwei Listen in Python zusammenErfahren Sie, wie Sie zwei Listen in Python am besten zusammenführen und kombinieren. Vergleichen Sie die Optionen Plus-Operator, Erweiterungsmethode, Listenentpacken und Kette.
Empfohlene Python-Ressourcen
Erweitern Sie Ihr Wissen mit zugehörigen interaktiven Tutorials, Spickzetteln und Codevergleichen.
Python-Funktionen
Beherrschen Sie Python-Funktionen. Erfahren Sie, wie Sie mit def wiederverwendbaren Code schreiben, Argumente definieren, Werte zurückgeben und den lokalen und globalen Bereich verstehen.
Spickzettel für Funktionen des Python-Mathemoduls
Kurzanleitung für die Python-Mathe-Standardbibliothek. Erfahren Sie, wie Sie trigonometrische, logarithmische, rundende und arithmetische Funktionen verwenden.
Python vs. JavaScript: Welche Programmiersprache ist die beste?
Ein umfassender Vergleich zwischen Python und JavaScript. Entdecken Sie Syntaxunterschiede, Leistung, Anwendungsfälle (Backend vs. Frontend) und Codierungsbeispiele.