Listenverständnis in Python – mit Beispielen
Veröffentlicht: 2022-02-18In Python helfen Ihnen List Comprehensions beim Erstellen neuer Listen aus vorhandenen Iterables wie Listen, Strings und Tupeln.
Ihre prägnante Syntax ermöglicht es Ihnen, neue Listen in nur einer Codezeile zu erstellen. Und dieses Tutorial zeigt Ihnen, wie Sie das tun können.
In den nächsten Minuten lernen Sie:
- Wie erstelle ich eine neue Liste mit
for
-Schleifen, - Die Syntax für die Verwendung von Listenverständnissen in Python und
- Wie man Listenverständnisse mit
if
-bedingter Anweisung ändert.
Darüber hinaus werden Sie auch mehrere Beispiele codieren, die Ihnen helfen, Listenverständnisse besser zu verstehen.
Tauchen wir ein.
So erstellen Sie Python-Listen mit for-Schleifen
Angenommen, Sie haben eine Liste mit Zahlen nums
. Und Sie möchten eine weitere Liste erstellen, die die Kubikzahl aller Zahlen in nums
. So machen Sie es mit einer for
-Schleife in Python:
nums = [2,3,5,7] num_cubes = [] for num in nums: num_cubes.append(num**3) print(num_cubes) # Output [8, 27, 125, 343]
Im obigen Code haben wir die folgenden Schritte:
- Initialisieren Sie eine leere Liste
num_cubes
. - Durchlaufen Sie die
nums
. - Greifen Sie auf jede Zahl
num
zu und berechnen Sie ihren Würfel mit dem Potenzierungsoperator:num**3
. - Hängen Sie schließlich den Kubikwert an die Liste
num_cubes
Hinweis: In Python wird der Potenzierungsoperator
**
mit der folgenden Syntax verwendet:num**pow
– die Zahlnum
wird potenziert mitpow
.
Sie können dies jedoch einfacher mit Listenverständnis in Python tun. Lassen Sie uns fortfahren, seine Syntax zu lernen.
Python List Comprehension-Syntax
Die allgemeine Syntax für das Listenverständnis ist unten dargestellt.
<new_list> = [<expression> for <item> in <iterable>]
Analysieren wir die obige Syntax.
- In Python werden Listen durch ein Paar eckiger Klammern
[]
getrennt – daher müssen Sie die Listenverständnisanweisung in[]
einschließen. -
<item>
in<iterable>
bedeutet, dass Sie eine Iterable durchlaufen. Jedes Python-Objekt, das Sie durchlaufen und auf einzelne Elemente zugreifen können, wie Listen, Tupel und Zeichenfolgen, sind iterierbar. -
<expression>
ist die Ausgabe, die Sie für jedes<item>
in<iterable>
berechnen möchten.
Und das klingt einfach, ja?
Im Wesentlichen möchten Sie etwas für alle Elemente in der Liste (oder einer iterierbaren) tun , um eine neue Liste zu erhalten.
Damit können wir die Syntax vereinfachen, wie im Bild unten gezeigt.

Nachdem Sie nun die Syntax gelernt haben, ist es an der Zeit, mit dem Codieren zu beginnen. Sie können die Online-Python-IDE von Geekflare verwenden, um diesen Beispielen zu folgen. Oder Sie könnten sie auf Ihrem lokalen Computer ausführen.
Beispiele für das Verständnis von Python-Listen
Im vorherigen Abschnitt haben Sie eine neue Liste num_cubes
aus nums
. Beginnen wir damit, dies mithilfe des Listenverständnisses umzuschreiben.
Verwenden des Listenverständnisses mit Zahlen
Lassen Sie uns nun die vereinfachte Syntax wie folgt verwenden:
-
<do-this>
: Hier müssen Sie jede Zahl in Würfelnum
. Ersetzen Sie also<do-this>
durchnum**3
. -
<all-items>
: Die Schleifenvariable istnum
– die einzelnen Zahlen in der Liste. -
<this-list>
: Die vorhandene Liste, die wir haben, istnums
. - Und
[num**3 for num in nums]
ist der letzte Ausdruck.
Zusammenfassend haben wir das folgende Code-Snippet:
num_cubes = [num**3 for num in nums] print(num_cubes) # Output [8, 27, 125, 343]
Herzlichen Glückwunsch, Sie haben Ihr erstes Listenverständnis codiert.
Lassen Sie uns weiter mit Python-Strings arbeiten.
Verwenden von Listenverständnis mit Zeichenfolgen
Angenommen, Sie haben die authors
– Sie können die Liste unten mit Ihren Lieblingsautoren umschreiben.
authors = ["jane austen","george orwell","james clear","cal newport"]
Beachten Sie, dass die Namen der Autoren in der obigen Liste in Kleinbuchstaben geschrieben sind. Wir möchten sie nun in der Groß-/Kleinschreibung des Titels formatieren und in einer neuen Liste namens author_list
.
Hinweis: In Python akzeptiert die Zeichenfolgenmethode title() eine Zeichenfolge als Argument und gibt eine Kopie der Zeichenfolge zurück, die in der Groß-/Kleinschreibung des Titels formatiert ist. Das heißt, der erste Buchstabe jedes Wortes wird groß geschrieben:
First-name Last-name
Hier ist also alles, was Sie tun müssen:
- Schleife durch die
authors
und für jedenauthor
in der Liste, - Rufen
author.title()
auf, um eine Kopie des Strings in Groß- und Kleinbuchstaben zu erhalten.
Und der Python-Code dafür ist unten gezeigt:
authors = ["jane austen","george orwell","james clear","cal newport"] author_list = [author.title() for author in authors] print(author_list) # Output ['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']
Beachten Sie in der obigen Ausgabe, wie die Namen aller Autoren in der Groß-/Kleinschreibung des Titels formatiert wurden – was wir wollten.

Verwenden des Listenverständnisses mit mehreren Listen
Bisher haben Sie gelernt, wie Sie Listenverständnis verwenden, um neue Listen aus einer vorhandenen Liste zu erstellen. Lassen Sie uns nun lernen, wie Sie aus mehreren Listen eine neue Liste erstellen.
Stellen Sie sich beispielsweise folgendes Problem vor: Sie haben zwei Listen l_arr
und b_arr
, die die Längen und Breiten von 4 Rechtecken enthalten.
Und Sie müssen einen neuen Listenbereich erstellen, der den area
dieser 4 Rechtecke enthält. Denken Sie daran, area = length * breadth
.
l_arr = [4,5,1,3] b_arr = [2,1,7,9]
Sie benötigen Elemente aus beiden Listen ( l_arr
und b_arr
), um die Fläche zu berechnen. Und Sie können dies mit der Funktion zip()
von Python tun.
Hinweis: In Python übernimmt die Funktion
zip()
eine oder mehrere Iterables als Argumente mit der Syntaxzip(*iterables)
. Es gibt dann einen Iterator von Tupeln zurück, wobei das Tupeli
das Elementi
von jedem der Iterablen enthält.
Das folgende Bild beschreibt dies im Detail. Sie haben 4 Werte in l_arr
und b_arr
, also reicht der Bereich der Indizes von 0 bis 3. Wie Sie sehen können, enthält das Tupel 0
l_arr[0]
und b_arr[0]
, Tupel 1
enthält l_arr[1]
und b_arr[1]
und so weiter.

Daher können Sie zip(l_arr,b_arr)
wie unten gezeigt durchlaufen:
area = [l*b for l,b in zip(l_arr,b_arr)] print(area) # Output [8,5,7,27]
Im nächsten Abschnitt erfahren Sie, wie Sie bedingte Anweisungen in einem Listenverständnis verwenden.
Python-Listenverständnis mit Bedingungssyntax
Beginnen wir damit, auf der vorherigen Syntax für das Listenverständnis aufzubauen.
Hier ist die Syntax:
<new_list> = [<expression> for <item> in <iterable> if <condition>]
Anstatt den <expression>
für alle Elemente zu berechnen, möchten Sie dies nur für diejenigen Elemente tun, die eine bestimmte <condition>
erfüllen – wobei condition := True
. Und dies führt zu einer vereinfachten Syntax wie gezeigt:

Fahren wir damit mit den Codebeispielen fort.
Python-Listenverständnis mit Bedingungsbeispielen
#1. Sie erhalten die Zeichenfolge „I’m learning Python in 2022“ . Sie möchten eine Liste aller Ziffern in dieser Zeichenfolge erhalten. Wie machst du das?
In Python wirkt
<char>.isdigit()
auf ein Zeichen<char>
und gibtTrue
zurück, wenn es eine Ziffer (0-9) ist; andernfalls gibt esFalse
zurück.
Das folgende Code-Snippet zeigt, wie Sie die Liste aller Ziffern in der Zeichenfolge str1
sammeln können.
str1 = "I'm learning Python3 in 2022" digits = [char for char in str1 if char.isdigit()] print(digits) # Output ['3', '2', '0', '2', '2']
Im obigen Code:
- Sie durchlaufen die Zeichenfolge
str1
, - Greifen Sie auf jedes Zeichen zu, um zu prüfen, ob es sich um eine Ziffer handelt, indem Sie die Methode
char
isdigit()
verwenden, und - fügen Sie
char
nur dann zur neuen Liste hinzu, wenn es sich um einedigits
handelt.
Nehmen wir ein anderes Beispiel.
#2. Sie haben eine Obstliste. Und Sie möchten eine Liste beginnen_mit_b erstellen, die alle fruits
aus der starts_with_b
enthält, die mit b
beginnen. Sie können die Methode startswith()
verwenden, um die Bedingung zu schreiben.
<str>.startswith('char')
gibtTrue
zurück, wenn <str> mit 'char' beginnt; andernfalls gibt esFalse
zurück.
fruits = ['blueberry','apple','banana','orange','cherry'] starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')] print(starts_with_b) # Output ['blueberry', 'banana']
In der obigen Ausgabe erhalten wir 'blueberry'
und 'banana'
, die die beiden fruits
sind, die wie erwartet mit 'b'
in der Fruchtliste beginnen.
Und damit endet unsere Diskussion über das Listenverständnis.
Fazit
Ich hoffe, dieses Tutorial hat Ihnen geholfen, Listenverständnisse in Python zu verstehen.
Fassen wir zusammen:
- Sie können [<do this> for <all-items> in <this-list>] verwenden, um eine neue Liste mit Listenverständnis zu erstellen.
- Zusätzlich können Sie die Syntax [<do this> for <all-items> in <this-list> if <condition-is-True>] mit der
if
-bedingten Anweisung verwenden.
Darüber hinaus haben Sie auch mehrere Beispiele codiert. Als nächsten Schritt können Sie versuchen, einige Ihrer vorhandenen Python-Schleifen für die Listenerstellung mithilfe des Listenverständnisses neu zu schreiben. Viel Spaß beim Codieren! Bis zum nächsten Tutorial.
Sie können sich jetzt ansehen, wie Sie eine Liste in ein Wörterbuch umwandeln oder lernen, wie Sie mit Dateien in Python umgehen.