So verwenden Sie die Zip-Funktion in Python

How Use Zip Function 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. 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:







Liste1= ['zu', 'B', 'C']
Liste2= ['Apfel', 'Ball', 'Katze']
gezippt= Postleitzahl(Liste1,Liste2)
drucken (aufführen(gezippt))

Die ersten beiden Anweisungen im obigen Codebeispiel definieren zwei Listen mit einigen Elementen. Als nächstes wird die Zip-Funktion verwendet, indem die Variablen list1 und list2 als Argumente übergeben werden. Dies ist die Hauptsyntax der Zip-Funktion. Sie müssen lediglich 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 ZIP-Funktion ein ZIP-Objekt und keine Liste zurückgibt. Sie müssen es in einen iterierbaren Typ konvertieren, wie in der obigen print-Anweisung gezeigt.



Einfach ausgedrückt, greift die Zip-Funktion Elemente desselben Index aus zwei Listen auf und kombiniert sie als Paar in einem Tupel. So wird das 0. Element aus Liste1 mit dem 0. Element aus Liste2 kombiniert, das 1. Element aus Liste1 mit dem 1. Element aus Liste2 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.





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 es mit Code zu tun haben, bei dem beide Listen nicht die gleiche Anzahl von Elementen haben, stoppt die Zip-Funktion beim letzten Element der Liste mit der niedrigsten Anzahl von Elementen.

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



Liste1= ['zu', 'B', 'C']
Liste2= ['Apfel', 'Ball', 'Katze', 'Puppe']
gezippt= Postleitzahl(Liste1,Liste2)
drucken (aufführen(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 Zip-Funktion übergeben. Der Grundsatz, beim letzten Element der kürzesten Liste anzuhalten, gilt weiterhin.

Liste1= ['zu', 'B', 'C']
Liste2= ['Apfel', 'Ball', 'Katze', 'Puppe']
Liste3= ['5', '3']
gezippt= Postleitzahl(Liste1,Liste2,Liste3)
drucken (aufführen(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 über ein zip-Objekt verfügen, können Sie damit einzelne Listen wieder auffüllen, die beim ersten Aufruf der zip-Funktion verwendet wurden.

Liste1= ['zu', 'B', 'C']
Liste2= ['Apfel', 'Ball', 'Katze', 'Puppe']
Liste3= ['5', '3']
gezippt= Postleitzahl(Liste1,Liste2,Liste3)
l1,l2,l3= Postleitzahl(*gezippt)
drucken (aufführen(l1), aufführen(l2), aufführen(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 unterschiedlicher 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 Zip-Funktion standardmäßig beim letzten Element des kürzesten Iterables 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 itertools-Modul von Python verwenden. Es funktioniert genauso wie die Zip-Funktion, mit einem kleinen Unterschied, dass es beim letzten Element des längsten iterierbaren Typs stoppt.

von itertools importierenzip_longest
Liste1= ['zu', 'B', 'C']
Liste2= ['Apfel', 'Ball', 'Katze', 'Puppe']
Liste3= ['5', '3']
gezippt=zip_longest(Liste1,Liste2,Liste3)
drucken (aufführen(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 fillvalue-Argument an die Methode zip_longest übergeben.

von itertools importierenzip_longest
Liste1= ['zu', 'B', 'C']
Liste2= ['Apfel', 'Ball', 'Katze', 'Puppe']
Liste3= ['5', '3']
gezippt=zip_longest(Liste1,Liste2,Liste3,Füllwert='mein_Wert')
drucken (aufführen(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')]

Abschluss

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.