Python - Listenverständnis
Listenverständnis
Das Listenverständnis bietet eine kürzere Syntax, wenn Sie eine neue Liste basierend auf den Werten einer vorhandenen Liste erstellen möchten.
Beispiel:
Basierend auf einer Liste von Früchten möchten Sie eine neue Liste, die nur die Früchte mit dem Buchstaben "a" im Namen enthält.
Ohne Listenverständnis müssen Sie eine for
Anweisung mit einem bedingten Test darin schreiben:
Beispiel
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = []
for x in fruits:
if "a" in x:
newlist.append(x)
print(newlist)
Mit Listenverständnis können Sie das alles mit nur einer Codezeile erledigen:
Beispiel
fruits = ["apple", "banana", "cherry", "kiwi", "mango"]
newlist = [x
for x in fruits if "a" in x]
print(newlist)
Die Syntax
newlist = [expression for item in iterable if condition == True]
Der Rückgabewert ist eine neue Liste, wobei die alte Liste unverändert bleibt.
Kondition
Die Bedingung ist wie ein Filter, der nur die Elemente mit dem Wert akzeptiert
True
.
Beispiel
Akzeptieren Sie nur Artikel, die nicht "Apfel" sind:
newlist = [x for x in fruits if x != "apple"]
Die Bedingung
if x != "apple"
wird True
für alle Elemente außer "Apfel" zurückgegeben, wodurch die neue Liste alle Früchte außer "Apfel" enthält.
Die Bedingung ist optional und kann weggelassen werden:
Beispiel
Ohne if
Aussage:
newlist = [x for x in fruits]
Wiederholbar
Das Iterable kann jedes iterierbare Objekt sein, wie eine Liste, ein Tupel, eine Menge usw.
Beispiel
Sie können die range()
Funktion verwenden, um ein Iterable zu erstellen:
newlist = [x for x in range(10)]
Gleiches Beispiel, aber mit einer Bedingung:
Beispiel
Akzeptiere nur Zahlen kleiner als 5:
newlist = [x for x in range(10) if x < 5]
Ausdruck
Der Ausdruck ist das aktuelle Element in der Iteration, aber auch das Ergebnis, das Sie bearbeiten können, bevor es wie ein Listenelement in der neuen Liste endet:
Beispiel
Setzen Sie die Werte in der neuen Liste auf Großbuchstaben:
newlist = [x.upper()
for x in fruits]
Sie können das Ergebnis beliebig einstellen:
Beispiel
Setzen Sie alle Werte in der neuen Liste auf „hello“:
newlist = ['hello' for x in fruits]
Der Ausdruck kann auch Bedingungen enthalten, nicht wie ein Filter, sondern als Möglichkeit, das Ergebnis zu manipulieren:
Beispiel
Geben Sie "orange" statt "banane" zurück:
newlist = [x if x != "banana" else "orange"
for x in fruits]
Der Ausdruck im obigen Beispiel sagt:
"Geben Sie den Artikel zurück, wenn es keine Banane ist, wenn es eine Banane ist, geben Sie orange zurück".