Wie man mehrere Listen in Python durchschleifen kann
Dieses Tutorial erklärt, wie man in Python gleichzeitig durch zwei Listen/Tupel iteriert. Wir werden zip()
und itertools.zip_longest()
verwenden und die Unterschiede zwischen ihnen und die Verwendung jeder einzelnen Liste/Tupel erklären. Wir werden auch sehen, wie sich der Rückgabetyp zip()
in Python 2 und 3 unterscheidet.
zip()
Funktion in Python 3.x
Die Funktion zip()
akzeptiert mehrere Listen/Tupel als Argumente und gibt ein zip
-Objekt zurück, das ein Iterator von Tupeln ist.
Verwenden Sie zip()
, um durch zwei Listen zu iterieren
Übergeben Sie beide Listen an die Funktion zip()
und verwenden Sie for-Schleife, um durch den Ergebnis-Iterator zu iterieren.
listA = [1, 2, 3, 4]
listB = [10, 20, 30, 40]
for a, b in zip(listA, listB):
print(a, b)
Ausgabe:
1 10
2 20
3 30
4 40
Verwenden Sie zip()
, um durch zwei Listen mit unterschiedlicher Länge zu iterieren
Wenn Listen unterschiedliche Längen haben, hört zip()
auf, wenn die kürzeste Liste endet. Siehe den Code unten.
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in zip(listA, listB):
print(a, b)
Ausgabe:
1 10
2 20
3 30
4 40
Verwenden Sie itertools.zip_longest()
, um durch zwei Listen zu iterieren
Wenn Sie durch zwei Listen iterieren müssen, bis die längste endet, verwenden Sie itertools.zip_longest()
. Es funktioniert genau wie die zip()
Funktion, außer dass es anhält, wenn die längste Liste endet.
Sie füllt die leeren Werte mit None
auf und gibt einen Iterator von Tupeln zurück.
import itertools
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in itertools.zip_longest(listA, listB):
print(a, b)
Ausgabe:
1 10
2 20
3 30
4 40
5 None
6 None
Der voreingestellte fillvalue
ist None
, aber Sie können fillvalue
auf einen beliebigen Wert setzen.
import itertools
listA = [1, 2, 3, 4, 5, 6]
listB = [10, 20, 30, 40]
for a, b in itertools.zip_longest(listA, listB, fillvalue=0):
print(a, b)
Ausgabe:
1 10
2 20
3 30
4 40
5 0
6 0
Verwendung von zip()
mit mehreren Listen
zip()
und seine Geschwisterfunktionen können mehr als zwei Listen akzeptieren.
import itertools
codes = [101, 102, 103]
students = ["James", "Noah", "Olivia"]
grades = [65, 75, 80]
for a, b, c in itertools.zip_longest(codes, students, grades, fillvalue=0):
print(a, b, c)
Ausgabe:
101 James 65
102 Noah 75
103 Olivia 80
zip()
Funktion in Python 2.x
Die Funktion zip()
in Python 2.x akzeptiert auch mehrere Listen/Tupel als Argumente, gibt aber eine Liste von Tupeln zurück. Das funktioniert gut für kleine Listen, aber wenn Sie große Listen haben, sollten Sie stattdessen itertools.izip()
verwenden, weil es einen Iterator von Tupeln zurückgibt.
Verwenden Sie itertools.izip()
, um durch zwei Listen zu iterieren
import itertools
listA = [1, 2, 3, 4]
listB = [10, 20, 30, 40]
for a, b in itertools.izip(listA, listB):
print(a, b)
Ausgabe:
1 10
2 20
3 30
4 40
Verwandter Artikel - Python List
- Alle Vorkommen eines Elements aus einer Liste in Python entfernen
- Konvertieren eines Dictionaries in eine Liste in Python
- Duplikate aus Liste entfernen in Python
- Wie erhält man den Durchschnitt einer Liste in Python
- Was ist der Unterschied zwischen den Listenmethoden append und extend
- Wie man eine Liste in Python in eine Zeichenkette konvertiert