Python

So verwenden Sie die Zip-Funktion in Python

So verwenden Sie die Zip-Funktion in Python
Dieser Artikel behandelt eine Anleitung zur „Zip“-Funktion, die in der Standardmodulbibliothek von Python verfügbar ist. Mit dieser Methode können Sie Elemente mehrerer iterierbarer Objekte kombinieren und paaren pair. Sie können dann weitere Logik für diese Paare ausführen. In vielen Fällen ist die Verwendung einer „zip“-Funktion viel effizienter und sauberer als die Verwendung mehrerer, verschachtelter „for“-Schleifen.

Über die Zip-Funktion

Wie bereits erwähnt, wird die „zip“-Funktion verwendet, um Paare aus Elementen mehrerer iterierbarer Objekte zu erstellen. Betrachten Sie das folgende Beispiel, um die grundlegende Syntax und Verwendung der Zip-Funktion zu verstehen:

list1 = ["a", "b", "c"]
list2 = ["Apfel", "Ball", "Katze"]
gezippt = zip(list1, list2)
drucken (Liste (gezippt))

Die ersten beiden Anweisungen im obigen Codebeispiel definieren zwei Listen mit einigen Elementen. Als nächstes wird die Funktion "zip" verwendet, indem die Variablen "list1" und "list2" als Argumente übergeben werden. Dies ist die Hauptsyntax der Funktion „zip“. Sie müssen nur Listen oder andere gültige geordnete Iterables als Argumente übergeben, deren Elemente Sie kombinieren möchten. Schließlich wird die print-Anweisung verwendet, um die Ausgabe der „gezippten“ Variablen zu erhalten. Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

[('a', 'Apfel'), ('b', 'Kugel'), ('c', 'Katze')]

Beachten Sie, dass die Funktion „zip“ ein Objekt vom Typ „zip“ und keine Liste zurückgibt. Sie müssen es in einen iterierbaren Typ konvertieren, wie in der print-Anweisung oben gezeigt.

Einfach ausgedrückt, nimmt die Funktion „zip“ Elemente desselben Index aus zwei Listen auf und kombiniert sie als Paar in einem Tupel. So wird das 0. Element von „list1“ mit dem 0. Element von „list2“ kombiniert, das 1. Element von „list1“ wird mit dem 1. Element von „list2“ kombiniert und so weiter. Die Zip-Funktion bewegt sich von links nach rechts und das Tupel, das gepaarte Elemente enthält, hat denselben Index wie die darin gespeicherten Elemente elements.

Verwenden von Zip, wenn Iterables nicht die gleiche Anzahl von Elementen haben

Im obigen Beispiel haben beide Listen die gleiche Anzahl von Elementen. Falls Sie mit Code zu tun haben, bei dem beide Listen nicht die gleiche Anzahl von Elementen haben, stoppt die Funktion „zip“ beim letzten Element der Liste mit der niedrigsten Anzahl von Elementen.

Im folgenden Beispiel stoppt die Funktion „zip“ beim Element „c“, unabhängig davon, ob „list2“ ein weiteres Element hat.

list1 = ["a", "b", "c"]
list2 = ["Apfel", "Ball", "Katze", "Puppe"]
gezippt = zip(list1, list2)
drucken (Liste (gezippt))

Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie die folgende Ausgabe erhalten:

[('a', 'Apfel'), ('b', 'Kugel'), ('c', 'Katze')]

Sie können mehr als zwei Iterables verwenden, wenn Sie die Zip-Funktion verwenden

Normalerweise wird die „zip“-Funktion verwendet, um zwei iterierbare Objekte zu vergleichen. Sie können jedoch beliebig viele Iterables als Argumente an die Funktion „zip“ übergeben. Das Prinzip, beim letzten Element der kürzesten Liste anzuhalten, bleibt weiterhin gültig.

list1 = ["a", "b", "c"]
list2 = ["Apfel", "Ball", "Katze", "Puppe"]
list3 = ["5", "3"]
gezippt = zip(list1, list2, list3)
drucken (Liste (gezippt))

Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie als Ergebnis die folgende Ausgabe erhalten:

[('a', 'Apfel', '5'), ('b', 'Kugel', '3')]

Erstellen individueller Listen aus einem Zip-Typ-Objekt

Wenn Sie bereits ein „zip“-Objekt haben, können Sie damit einzelne Listen wieder auffüllen, die zuvor beim ersten Aufruf der Zip-Funktion verwendet wurden.

list1 = ["a", "b", "c"]
list2 = ["Apfel", "Ball", "Katze", "Puppe"]
list3 = ["5", "3"]
gezippt = zip(list1, list2, list3)
l1, l2, l3 = zip(*gezippt)
drucken (Liste(l1), Liste(l2), Liste(l3))

Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie als Ergebnis die folgende Ausgabe erhalten:

['a', 'b'] ['Apfel', 'Kugel'] ['5', '3']

Im obigen Codebeispiel wird das „zip“-Objekt mit dem „*“-Operator entleert. Deflationierte Ergebnisse werden dann in einen anderen Aufruf der Zip-Funktion eingespeist, die Originallisten erstellt. Beachten Sie, dass Sie möglicherweise nicht alle Elemente in die ursprünglichen Listen zurückbekommen, wenn beim ersten Erstellen des „zip“-Objekts Listen mit ungleicher Länge verwendet wurden.

Verwenden von Zip, wenn Sie Elemente vom längsten Iterable behalten möchten

In mehreren obigen Beispielen haben Sie vielleicht beobachtet, dass die Funktion „zip“ standardmäßig beim letzten Element der kürzesten Iteration stoppt. Was ist, wenn Sie möchten, dass die Iteration fortgesetzt wird, bis das letzte Element der längsten Iteration erreicht ist??

In einem solchen Fall müssen Sie die Methode „zip_longest()“ aus dem Python-Modul „itertools“ verwenden. Sie funktioniert genauso wie die „zip“-Funktion, mit einem kleinen Unterschied, dass sie beim letzten Element des längsten iterierbaren Typs stoppt.

aus itertools importieren zip_longest
list1 = ["a", "b", "c"]
list2 = ["Apfel", "Ball", "Katze", "Puppe"]
list3 = ["5", "3"]
gezippt = zip_longest(list1, list2, list3)
drucken (Liste (gezippt))

Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie als Ergebnis die folgende Ausgabe erhalten:

[('a', 'Apfel', '5'), ('b', 'Ball', '3'), ('c', 'Katze', Keine), (Keine, 'Puppe', Keine) ]

Fehlende Werte werden als Objekte vom Typ „Keine“ ausgefüllt. Sie können auch Ihren eigenen Wert zum Füllen angeben, indem Sie ein zusätzliches Argument „fillvalue“ an die Methode „zip_longest“ übergeben”.

aus itertools importieren zip_longest
list1 = ["a", "b", "c"]
list2 = ["Apfel", "Ball", "Katze", "Puppe"]
list3 = ["5", "3"]
gezippt = zip_longest(list1, list2, list3, fillvalue="my_value")
drucken (Liste (gezippt))

Nachdem Sie das oben erwähnte Codebeispiel ausgeführt haben, sollten Sie als Ergebnis die folgende Ausgabe erhalten:

[('a', 'apfel', '5'), ('b', 'ball', '3'), ('c', 'cat', 'my_value'), ('my_value', 'puppe' ', 'mein_Wert')]

Fazit

Die Zip-Funktion kann mit einigen Schleifen- und Bedingungsanweisungen emuliert werden. Es hilft jedoch dabei, den Code organisiert und sauberer zu halten, indem unnötige Ausführlichkeit und sich wiederholende Anweisungen entfernt werden.

Installieren Sie das neueste OpenRA-Strategiespiel auf Ubuntu Linux
OpenRA ist eine Libre/Free Real Time Strategy Game Engine, die die frühen Westwood-Spiele wie den Klassiker Command & Conquer: Red Alert Red nachbilde...
Installieren Sie den neuesten Dolphin Emulator für Gamecube & Wii unter Linux
Mit dem Dolphin Emulator können Sie Ihre ausgewählten Gamecube- und Wii-Spiele auf Linux-Personalcomputern (PC) spielen. Als frei verfügbarer Open-So...
So verwenden Sie die GameConqueror-Cheat-Engine unter Linux
Der Artikel enthält eine Anleitung zur Verwendung der GameConqueror-Cheat-Engine unter Linux. Viele Benutzer, die Spiele unter Windows spielen, verwen...