Wie man mehrere Listen in Python durchschleifen kann

mo abdelazim 30 Januar 2023
  1. zip() Funktion in Python 3.x
  2. zip() Funktion in Python 2.x
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