logo

Verschachtelte Listenverständnisse in Python

Listenverständnis ist eine der erstaunlichsten Funktionen von Python . Es handelt sich um eine intelligente und übersichtliche Möglichkeit, Listen durch Iteration über ein iterierbares Objekt zu erstellen. Verschachtelte Listenverständnisse sind nichts anderes als ein Listenverständnis innerhalb eines anderen Listenverständnisses, das verschachtelten for-Schleifen ziemlich ähnlich ist.

Verständnis verschachtelter Listen in der Python-Syntax

Unten ist die Syntax von verschachtelt Listenverständnis :



Syntax: new_list = [[Ausdruck für Element in Liste] für Element in Liste]

Parameter:

  • Ausdruck : Ausdruck, der zum Ändern jedes Elements in der Anweisung verwendet wird
  • Artikel: Das Element im iterierbaren
  • Aufführen: Ein iterierbares Objekt

Beispiele für verschachtelte Python-Listenverständnisse

Nachfolgend finden Sie einige Beispiele für das Verständnis verschachtelter Listen:



Beispiel 1: Erstellen einer Matrix

In diesem Beispiel vergleichen wir, wie wir können Erstellen Sie eine Matrix wenn wir es mit erstellen

Ohne Listenverständnis

In diesem Beispiel wird eine 5×5-Matrix mithilfe einer verschachtelten Schleifenstruktur erstellt. Eine äußere Schleife durchläuft fünf Mal und hängt leere Unterlisten anmatrix>, während eine innere Schleife jede Unterliste mit Werten im Bereich von 0 bis 4 füllt, was zu einer Matrix mit aufeinanderfolgenden ganzzahligen Werten führt.



Python3




matrix>=> []> for> i>in> range>(>5>):> ># Append an empty sublist inside the list> >matrix.append([])> >for> j>in> range>(>5>):> >matrix[i].append(j)> print>(matrix)>

>

>

Ausgabe

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>

Verwendung des Listenverständnisses

Die gleiche Ausgabe kann durch das Verständnis verschachtelter Listen in nur einer Zeile erreicht werden. In diesem Beispiel wird eine 5×5-Matrix mithilfe eines verschachtelten Listenverständnisses generiert. Das äußere Verständnis iteriert fünfmal und stellt die Zeilen dar, während das innere Verständnis jede Zeile mit Werten zwischen 0 und 4 füllt, was zu einer Matrix mit aufeinanderfolgenden ganzzahligen Werten führt.

Klasse vs. Objekt Java

Python3




# Nested list comprehension> matrix>=> [[j>for> j>in> range>(>5>)]>for> i>in> range>(>5>)]> print>(matrix)>

>

>

Ausgabe

[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]>

Beispiel 2: Filtern einer verschachtelten Liste mithilfe des Listenverständnisses

Hier sehen wir, wie wir eine Liste mit und ohne Verwendung des Listenverständnisses filtern können.

Ohne Verwendung des Listenverständnisses

In diesem Beispiel durchläuft eine verschachtelte Schleife eine 2D-Matrix, extrahiert ungerade Zahlen aus der Python-Liste innerhalb der Liste und hängt sie an die Liste anodd_numbers>. Die resultierende Liste enthält alle ungeraden Elemente der Matrix.

Python3




matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> odd_numbers>=> []> for> row>in> matrix:> >for> element>in> row:> >if> element>%> 2> !>=> 0>:> >odd_numbers.append(element)> print>(odd_numbers)>

>

>

Ausgabe

[1, 3, 5, 7, 9]>

Verwendung des Listenverständnisses

In diesem Beispiel wird ein Listenverständnis verwendet, um die Liste prägnant zu generierenodd_numbers>durch Iterieren durch die Elemente einer 2D-Matrix. In der resultierenden Liste sind nur ungerade Elemente enthalten, was eine prägnante und lesbare Alternative zur entsprechenden verschachtelten Schleifenstruktur darstellt.

Python3




matrix>=> [[>1>,>2>,>3>], [>4>,>5>,>6>], [>7>,>8>,>9>]]> odd_numbers>=> [> >element>for> row>in> matrix>for> element>in> row>if> element>%> 2> !>=> 0>]> print>(odd_numbers)>

>

>

Ausgabe

[1, 3, 5, 7, 9]>

Beispiel 3: Verschachtelte Unterlisten reduzieren

Ohne Listenverständnis

In diesem Beispiel eine 2D-Liste mit dem Namenmatrix>mit unterschiedlichen Unterlistenlängen werden mithilfe verschachtelter Schleifen reduziert. Die Elemente aus jeder Unterliste werden der Reihe nach an die Liste angehängtflatten_matrix>, was zu einer abgeflachten Darstellung der ursprünglichen Matrix führt.

Python3




# 2-D List> matrix>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>,>9>]]> flatten_matrix>=> []> for> sublist>in> matrix:> >for> val>in> sublist:> >flatten_matrix.append(val)> print>(flatten_matrix)>

>

>

Ausgabe

[1, 2, 3, 4, 5, 6, 7, 8, 9]>

Mit Listenverständnis

Auch dies kann mithilfe des unten gezeigten Verständnisses verschachtelter Listen erfolgen. In diesem Beispiel eine 2D-Liste mit dem Namenmatrix>mit unterschiedlichen Teillistenlängen werden mithilfe des Verständnisses verschachtelter Listen reduziert. Der Ausdruck[val for sublist in matrix for val in sublist]>generiert prägnant eine abgeflachte Liste, indem nacheinander jedes Element aus den Unterlisten eingefügt wird.

Python3




# 2-D List> matrix>=> [[>1>,>2>,>3>], [>4>,>5>], [>6>,>7>,>8>,>9>]]> # Nested List Comprehension to flatten a given 2-D matrix> flatten_matrix>=> [val>for> sublist>in> matrix>for> val>in> sublist]> print>(flatten_matrix)>

>

>

Ausgabe

[1, 2, 3, 4, 5, 6, 7, 8, 9]>

Beispiel 4: Zeichenfolge mithilfe des Listenverständnisses bearbeiten

Ohne Listenverständnis

In diesem Beispiel eine 2D-Liste mit dem Namenmatrix>Die Zeichenfolgen enthaltenden Zeichenfolgen werden mithilfe von Nested geändert Schleifen . Die innere Schleife schreibt den ersten Buchstaben jeder Frucht groß und die äußere Schleife erstellt eine neue 2D-Liste.modified_matrix>, mit den großgeschriebenen Früchten, was zu einer Matrix aus Zeichenfolgen mit Anfangsbuchstaben in Großbuchstaben führt.

Python3




matrix>=> [[>'apple'>,>'banana'>,>'cherry'>],> >[>'date'>,>'fig'>,>'grape'>],> >[>'kiwi'>,>'lemon'>,>'mango'>]]> modified_matrix>=> []> for> row>in> matrix:> >modified_row>=> []> >for> fruit>in> row:> >modified_row.append(fruit.capitalize())> >modified_matrix.append(modified_row)> print>(modified_matrix)>

>

>

Ausgabe

[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>

Mit Listenverständnis

In diesem Beispiel eine 2D-Liste mit dem Namenmatrix>Die Zeichenfolgen enthaltende Zeichenfolgen werden mithilfe des Verständnisses verschachtelter Listen transformiert. Der Ausdruck[[fruit.capitalize() for fruit in row] for row in matrix]>generiert effizient eine modifizierte Matrix, in der der erste Buchstabe jeder Frucht großgeschrieben wird, was zu einer neuen Matrix aus Zeichenfolgen mit Großbuchstaben am Anfang führt.

Python3




matrix>=> [[>'apple'>,>'banana'>,>'cherry'>],> >[>'date'>,>'fig'>,>'grape'>],> >[>'kiwi'>,>'lemon'>,>'mango'>]]> modified_matrix>=> [[fruit.capitalize()>for> fruit>in> row]>for> row>in> matrix]> print>(modified_matrix)>

>

>

Ausgabe

[['Apple', 'Banana', 'Cherry'], ['Date', 'Fig', 'Grape'], ['Kiwi', 'Lemon', 'Mango']]>