Die zip()-Funktion in Python (2024)

Die zip()-Funktion in Python (1)

In Python und allen Programmiersprachen können wir for- und while-Schleifen verwenden, um über Arrays zu iterieren. Das Iterieren über ein einzelnes Array ist sehr einfach. Wenn es jedoch darum geht, über mehrere Arrays zusammen zu iterieren, werden die Dinge komplex. Wenn die Größe aller Arrays gleich ist, dann ist es eine einfache Aufgabe. Aber wenn Array-Größen unterschiedlich sind, müssen wir sicherstellen, dass wir nur die Länge des kleinsten Arrays berücksichtigen, um Fehler und Ausnahmen zu vermeiden.

Python macht diese Aufgabe viel einfacher. Anstatt manuell Logik zum Iterieren über Arrays unterschiedlicher Größe zu schreiben, können wir ein eingebautes Dienstprogramm verwenden, genauer gesagt eine Funktion, die von Python bereitgestellt wird. Diese Funktion ist die zip()-Funktion.

Dieser Artikel stellt die Funktion zip() und ihre Verwendung vor.

Die Funktion zip() in Python

Die Funktion zip() akzeptiert iterierbare Objekte wie Listen, Strings und Tupel als Argumente und gibt ein einzelnes Iterable zurück.

Das zurückgegebene iterierbare Objekt hat die Länge des kleinsten iterierbaren Objekts. Wenn beispielsweise zwei Listen der Größe 5 und 10 an die Funktion zip() übergeben werden, hat das zurückgegebene iterierbare Objekt eine Länge von 5. Das bedeutet, dass nur die ersten 5 Elemente der zweiten Liste Teil des iterierbaren Objekts sind. Wenn dieser Funktion ein leeres iterierbares oder kein iterierbares Objekt übergeben wird, gibt sie auch ein leeres iterierbares Objekt zurück.

Nun, da wir mit der Theorie fertig sind, wollen wir sehen, wie man diese Funktion verwendet. Sehen Sie sich die folgenden Beispiele an, um seine Verwendung zu verstehen.

Kein iterierbares Objekt

Im folgenden Python-Code wird kein iterierbares Objekt an die Funktion zip() übergeben.

result = zip()for x in result: print(x)

Nichts wird auf der Konsole gedruckt, wenn wir den obigen Code ausführen. Der Grund dafür ist einfach; Wenn kein iterierbares Objekt bereitgestellt würde, hätten wir nichts zu iterieren. Daher wird ein leeres iterierbares Objekt zurückgegeben.

Iterierbare Objekte gleicher Länge

Im folgenden Python-Code werden ein Tupel aus ganzen Zahlen, eine Liste mit Gleitkommawerten, eine Liste mit Klassenobjekten und ein gleich langer String an die Funktion zip() übergeben.

class Number: def __init__(self, number): self.number = number def square(self): return number ** 2 def __repr__(self): return f"Number({self.number})"a = (11, 22, 33, 44, 55)b = [1.1, 2.2, 3.3, 4.4, 5.5]c = [Number(1), Number(23), Number(44.44), Number(0), Number(-9)]d = "Hello"result = zip(a, b, c, d)for x in result: print(x)

Ausgabe:

(11, 1.1, Number(1), 'H')(22, 2.2, Number(23), 'e')(33, 3.3, Number(44.44), 'l')(44, 4.4, Number(0), 'l')(55, 5.5, Number(-9), 'o')

Wie wir sehen können, speichert die Funktion zip() Werte über alle iterierbaren Objekte hinweg zusammen in Tupeln. Die Reihenfolge der Werte innerhalb der Tupel ist dieselbe wie die Reihenfolge, in der ihre iterierbaren Objekte der Funktion zip() bereitgestellt wurden.

Wir können diese Werte innerhalb der for-Schleife für einen einfachen Zugriff destrukturieren oder entpacken. Siehe dazu den folgenden Code.

class Number: def __init__(self, number): self.number = number def square(self): return number ** 2 def __repr__(self): return f"Number({self.number})"a = (11, 22, 33, 44, 55)b = [1.1, 2.2, 3.3, 4.4, 5.5]c = [Number(1), Number(23), Number(44.44), Number(0), Number(-9)]d = "Hello"result = zip(a, b, c, d)for p, q, r, s in result: print("A:", p) print("B:", q) print("C:", r) print("D:", s)

Ausgabe:

A: 11B: 1.1C: Number(1)D: HA: 22B: 2.2C: Number(23)D: eA: 33B: 3.3C: Number(44.44)D: lA: 44B: 4.4C: Number(0)D: lA: 55B: 5.5C: Number(-9)D: o

Anstatt for-Schleifen zu verwenden, können wir auch mit einer while-Schleife über ein iterierbares Objekt iterieren. Bei while-Schleifen würden wir zwei zusätzliche Dinge benötigen, die next()-Funktion und einen try-except-Block. Die Funktion next() wird verwendet, um Werte aus dem iterierbaren Objekt abzurufen, das von der Funktion zip() zurückgegeben wird, und der Block try...except wird verwendet, um die Iteration zu stoppen. Siehe dazu den folgenden Python-Code.

class Number: def __init__(self, number): self.number = number def square(self): return number ** 2 def __repr__(self): return f"Number({self.number})"a = (11, 22, 33, 44, 55)b = [1.1, 2.2, 3.3, 4.4, 5.5]c = [Number(1), Number(23), Number(44.44), Number(0), Number(-9)]d = "Hello"result = zip(a, b, c, d)while True: try: p, q, r, s = next(result) print("A:", p) print("B:", q) print("C:", r) print("D:", s) except StopIteration: break

Ausgabe:

A: 11B: 1.1C: Number(1)D: HA: 22B: 2.2C: Number(23)D: eA: 33B: 3.3C: Number(44.44)D: lA: 44B: 4.4C: Number(0)D: lA: 55B: 5.5C: Number(-9)D: o

Wenn innerhalb eines Iterators keine Werte verfügbar sind, wird eine StopIteration-Ausnahme ausgelöst. Mit einem try-except-Block fangen wir diese Ausnahme ab und verlassen die while-Endlosschleife.

Iterierbare Objekte unterschiedlicher Länge

Im folgenden Python-Code wird der Funktion zip() ein Tupel aus ganzen Zahlen, eine Liste mit Gleitkommawerten, eine Liste mit Klassenobjekten und ein String unterschiedlicher Länge übergeben.

class Number: def __init__(self, number): self.number = number def square(self): return number ** 2 def __repr__(self): return f"Number({self.number})"a = (11, 22, 33)b = [1.1, 2.2, 3.3, 4.4]c = [Number(1), Number(23), Number(44.44), Number(0), Number(-9)]d = "HelloWorld"result = zip(a, b, c, d)for p, q, r, s in result: print("A:", p) print("B:", q) print("C:", r) print("D:", s)

Ausgabe:

A: 11B: 1.1C: Number(1)D: HA: 22B: 2.2C: Number(23)D: eA: 33B: 3.3C: Number(44.44)D: l

Alle iterierbaren Objekte haben unterschiedliche Längen. Das erste iterierbare Objekt oder Tupel von ganzen Zahlen hat die kleinste Länge, 3. Daher gibt die Ausgabe nur die ersten 3 Werte von allen iterierbaren Objekten aus.

Erstellen eines Wörterbuchs

Mit Hilfe der Funktion zip() können wir ein Dictionary von Schlüssel-Wert-Paaren erstellen. Die Idee besteht darin, einen Iterator aus zwei Arrays gleicher Länge zu erstellen, die Schlüssel und ihre jeweiligen Werte enthalten, und sie in einem Dictionary einander zuzuordnen, während das zurückgegebene iterierbare Objekt durchlaufen wird. Siehe dazu den folgenden Code.

import jsona = ["W", "O", "R", "L", "D"]b = [1.1, True, "Hello", None, 5]result = zip(a, b)mapping = {x: y for x, y in result}print(json.dumps(mapping, indent=4))

Ausgabe:

{ "W": 1.1, "O": true, "R": "Hello", "L": null, "D": 5}

Der obige Code verwendet nur das json-Modul, um die Ausgabe des Wörterbuchs zu verschönern. Beachten Sie, dass die Verwendung völlig optional ist.

Verwenden der Funktion zip() zusammen mit der Funktion enumerate()

Die Funktion enumerate() wird verwendet, um den Index und den Wert gleichzeitig zu erhalten, während über ein iterierbares Objekt iteriert wird. Da die Funktion zip() einen Iterator zurückgibt, können wir die beiden Funktionen zusammenlegen und haben Zugriff auf die Indizes und die Werte. Siehe dazu den folgenden Python-Code.

class Number: def __init__(self, number): self.number = number def square(self): return number ** 2 def __repr__(self): return f"Number({self.number})"a = (11, 22, 33)b = [1.1, 2.2, 3.3, 4.4]c = [Number(1), Number(23), Number(44.44), Number(0), Number(-9)]d = "HelloWorld"result = zip(a, b, c, d)for i, (p, q, r, s) in enumerate(result): print(f"A{i + 1}:", p) print(f"B{i + 1}:", q) print(f"C{i + 1}:", r) print(f"D{i + 1}:", s)

Ausgabe:

A1: 11B1: 1.1C1: Number(1)D1: HA2: 22B2: 2.2C2: Number(23)D2: eA3: 33B3: 3.3C3: Number(44.44)D3: l

Im obigen Python-Code entpackt innerhalb der for-Schleife i, (p, q, r, s) die von der Funktion enumerate() zurückgegebenen Werte und (p, q, r, s) Entpacken Sie die von der Funktion zip() zurückgegebenen Werte.

Die von der Funktion enumerate() zurückgegebenen Werte haben das folgende Format.

(0, (11, 1.1, Number(1), "H"))(1, (22, 2.2, Number(23), "e"))(2, (33, 3.3, Number(44.44), "l"))

Es verdeutlicht, warum i, (p, q, r, s) verwendet wurde, um alle Werte zu entpacken.

Die zip()-Funktion in Python (2024)

References

Top Articles
Field Coordinator at Community Development Centre-CODEC | Dohaj.com
The Salvation Army hiring Food Pantry Coordinator/Program Facilitator in Honesdale, Pennsylvania, United States | LinkedIn
Wyoming Dot Webcams
Cincinnati Adult Search
8Kun Hypnosis
Optum Primary Care - Winter Park Aloma
911 Active Calls Caddo
Generation Zero beginner’s guide: six indispensable tips to help you survive the robot revolution
Unlock the Fun: A Beginner's Guide to Playing TBG95 Unblocked Games at School and Beyond
Maryse Mizanin Nip Slip
Her Triplet Alphas Chapter 32
Craigslist Cars For Sale By Owner Oklahoma City
Chicken Coop Brookhaven Ms
Craigslist Jobs Glens Falls Ny
The Quiet Girl Showtimes Near Amc Shirlington 7
Power Supplemental Payment 2022 Round 4
Unveiling The Fascination: Makayla Campinos Video
rochester, NY cars & trucks - craigslist
Spanish Letter Closings: formal, friendly, and informal - Wanderlust Spanish
Old Navy Student Discount Unidays
Ups Drop Off Newton Ks
Erj Phone Number
Bustime B8
Baby | Voeding | Voeding het eerste jaar; borstvoeding
10 018 Sqft To Acres
South Carolina Title Transfer Does Sc Require Notary Seal For Auto Title Transfer
Dfw Rainfall Last 72 Hours
Bakkesmod Preset
Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa
Sce Menifee Service Center
The Legend of Maula Jatt | Rotten Tomatoes
Ucf Net Price Calculator
Paola Iezzi, chi è il compagno. L’uomo in comune con la sorella Chiara e le nozze 'congelate'
Greg Teaches An Art Class
House Party 2023 Showtimes Near Mjr Chesterfield
Chalkies | Gutgash's Territory - maps - Mad Max Game Guide
Galen Rupp Net Worth
Filmy4 Web Xyz.com
Ece 2300 Osu
Gary Keesee Kingdom Principles Pdf
About Baptist Health - Baptist Health
Bridgeway Diagnostic Auburn Al
[PDF] (Indices und Systematiken) - Free Download PDF
Craigslist Ft Meyers
Is There A Sprite Zero Shortage? - (September 2024)
Locate Td Bank Near Me
La Monja 2 Pelicula Completa Tokyvideo
Marquette Gas Prices
How To Spend a Day in Port Angeles (15 Things to Do!)
Richard Grieve Judge Judy
R Warhammer Competitive
Watch It Horror Thriller movies | Crystal panel
Latest Posts
Article information

Author: Kimberely Baumbach CPA

Last Updated:

Views: 6405

Rating: 4 / 5 (61 voted)

Reviews: 92% of readers found this page helpful

Author information

Name: Kimberely Baumbach CPA

Birthday: 1996-01-14

Address: 8381 Boyce Course, Imeldachester, ND 74681

Phone: +3571286597580

Job: Product Banking Analyst

Hobby: Cosplaying, Inline skating, Amateur radio, Baton twirling, Mountaineering, Flying, Archery

Introduction: My name is Kimberely Baumbach CPA, I am a gorgeous, bright, charming, encouraging, zealous, lively, good person who loves writing and wants to share my knowledge and understanding with you.