Heim  >  Artikel  >  Backend-Entwicklung  >  Über das Zuziehen eines Mantels hinaus: Beherrschen von „zip_longest“ in Python

Über das Zuziehen eines Mantels hinaus: Beherrschen von „zip_longest“ in Python

PHPz
PHPzOriginal
2024-08-10 07:09:081156Durchsuche

Beyond Zipping Up a Coat: Mastering

Ich wette, Sie haben wahrscheinlich schon einmal die Frustration erlebt, Daten zu verlieren, wenn Sie versuchen, zwei Listen mit unterschiedlicher Länge in Python zu komprimieren.
itertools.zip_longest ist hier, um den Tag zu retten. Hier möchte ich untersuchen, wie man zip_longest() verwendet, es mit dem Standard-zip vergleichen und in praktische Szenarien eintauchen, in denen es glänzt.

Was ist itertools.zip_longest?

Mit der Funktion zip_longest() aus dem Modul itertools in Python können Sie mehrere Iterables komprimieren und die kürzeren mit einem angegebenen Wert füllen (Standard). Dadurch wird sichergestellt, dass keine Daten verloren gehen, auch wenn die Iterables unterschiedlich lang sind.

Praxisbeispiel

Stellen Sie sich ein Szenario vor, in dem Sie versuchen, Schüler in einem Klassenzimmer unterzubringen, aber die Anzahl der Schüler und die Anzahl der verfügbaren Schreibtische nicht übereinstimmen. Sie möchten sicherstellen, dass jeder Schüler einen Sitzplatz hat und jeder Platz so weit wie möglich besetzt ist.

  • Wenn Sie zip() verwenden, stoppt die Kopplung, sobald Ihnen die Schüler oder Schreibtische ausgehen. Dies bedeutet, dass einige Schreibtische möglicherweise leer bleiben oder einige Schüler stehen bleiben.

  • Mit zip_longest() können Sie jedem Schüler einen Schreibtisch zuweisen, und wenn Ihnen die Tische ausgehen, können Sie feststellen, dass zusätzliche Schüler stehen müssen. Wenn es mehr Schreibtische als Studenten gibt, können Sie alternativ die zusätzlichen Schreibtische als „leer“ markieren. Jeder Schüler wird berücksichtigt und Sie wissen genau, welche Plätze frei bleiben.

Betrachten Sie ein Beispiel, in dem die Anzahl der Schreibtische die Anzahl der Schüler übersteigt, indem Sie sowohl zip() als auch zip_longest() verwenden.

Mit zip()

students = ['Alice', 'Bob']
desks = ['Desk 1', 'Desk 2', 'Desk 3']

# Using zip to pair students with desks
seating_zip = list(zip(students, desks))

print("Seating with zip:")
for student, desk in seating_zip:
    print(f"{student} is assigned to {desk}")

Ausgabe:

Seating with zip:
Alice is assigned to Desk 1
Bob is assigned to Desk 2

Mit zip() stoppt die Kopplung, sobald die kürzere Liste (Studenten) erschöpft ist. Schreibtisch 3 bleibt unbelegt und es gibt keinen Hinweis darauf, dass er nicht genutzt wird.

Mit zip_longest()

from itertools import zip_longest

students = ['Alice', 'Bob']
desks = ['Desk 1', 'Desk 2', 'Desk 3']

# Using zip_longest to pair students with desks
seating_zip_longest = list(zip_longest(students, desks, fillvalue='Empty Seat'))

print("\nSeating with zip_longest:")
for student, desk in seating_zip_longest:
    print(f"{student} is assigned to {desk}")

Ausgabe:

Seating with zip_longest:
Alice is assigned to Desk 1
Bob is assigned to Desk 2
Empty Seat is assigned to Desk 3

Mit zip_longest() wird jeder Schreibtisch berücksichtigt, auch wenn nicht genügend Studenten vorhanden sind, um alle Plätze zu besetzen. In diesem Fall wird Schreibtisch 3 mit „Leerer Sitzplatz“ gepaart, was anzeigt, dass dieser Schreibtisch unbesetzt bleibt. Dieser Ansatz ist besonders nützlich, wenn Sie den Überblick über alle Ressourcen behalten und sicherstellen müssen, dass nichts ausgelassen wird.

? Vorteile von zip_longest():
Erhält Daten: Stellt sicher, dass keine Daten verloren gehen, indem kürzere Iterables gefüllt werden.
Flexibilität: Ermöglicht die Angabe eines benutzerdefinierten Füllwerts.
Umfassende Paarung: Nützlich bei Datenverarbeitungsaufgaben, bei denen die Ausrichtung von Iterables unterschiedlicher Länge erforderlich ist.
? Nachteile von zip_longest():
Auffüllen kann unerwünscht sein:In manchen Fällen kann das Auffüllen zu unnötiger Komplexität führen.
Speichernutzung: Benötigt möglicherweise mehr Speicher, wenn mit großen Iterables und großen Füllwerten gearbeitet wird.

? Vorteile von zip():
Einfach und effizient:Funktioniert gut mit Iterables gleicher Länge.
Weniger Speicherverbrauch:Kein Auffüllen bedeutet möglicherweise weniger Speicheraufwand.
? Nachteile von zip():
Datenverlust:Wird auf die kürzeste iterierbare Version gekürzt, wodurch Daten aus längeren verloren gehen.

Fazit

zip_longest() ist ein leistungsstarkes Werkzeug im Arsenal von Python, insbesondere wenn man mit Iterables unterschiedlicher Länge arbeitet. Es gewährleistet die Datenintegrität durch das Auffüllen fehlender Werte und eignet sich daher ideal für verschiedene Datenverarbeitungsaufgaben. Während zip() einfacher und speichereffizienter ist, bietet zip_longest() die Flexibilität, die in vielen praktischen Szenarien benötigt wird.

Das obige ist der detaillierte Inhalt vonÜber das Zuziehen eines Mantels hinaus: Beherrschen von „zip_longest“ in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn