Python-Listenverständnis (mit Beispielen)

In diesem Artikel erfahren Sie mehr über das Verständnis von Python-Listen und deren Verwendung.

Listenverständnis vs For-Schleife in Python

Angenommen, wir möchten die Buchstaben des Wortes trennen humanund die Buchstaben als Elemente einer Liste hinzufügen. Das erste, was mir in den Sinn kommt, ist die Verwendung der for-Schleife.

Beispiel 1: Durchlaufen einer Zeichenfolge Using for Loop

 h_letters = () for letter in 'human': h_letters.append(letter) print(h_letters)

Wenn wir das Programm ausführen, lautet die Ausgabe:

 ('Mensch')

Python bietet jedoch eine einfachere Möglichkeit, dieses Problem mithilfe des Listenverständnisses zu lösen. Das Listenverständnis ist eine elegante Möglichkeit, Listen basierend auf vorhandenen Listen zu definieren und zu erstellen.

Mal sehen, wie das obige Programm mit Listenverständnis geschrieben werden kann.

Beispiel 2: Durchlaufen einer Zeichenfolge mithilfe des Listenverständnisses

 h_letters = ( letter for letter in 'human' ) print( h_letters)

Wenn wir das Programm ausführen, lautet die Ausgabe:

 ('Mensch')

Im obigen Beispiel wird der Variablen h_letters eine neue Liste zugewiesen, und die Liste enthält die Elemente der iterierbaren Zeichenfolge 'human'. Wir rufen die print()Funktion auf, um die Ausgabe zu erhalten.

Syntax des Listenverständnisses

 (Ausdruck für Element in Liste)

Wir können jetzt identifizieren, wo Listenverständnisse verwendet werden.

Wenn Sie bemerkt haben, humanist eine Zeichenfolge, keine Liste. Dies ist die Kraft des Listenverständnisses. Es kann erkennen, wann es eine Zeichenfolge oder ein Tupel empfängt, und wie eine Liste daran arbeiten.

Sie können dies mit Schleifen tun. Es kann jedoch nicht jede Schleife als Listenverständnis umgeschrieben werden. Wenn Sie jedoch lernen und sich mit Listenverständnissen vertraut machen, werden Sie feststellen, dass Sie immer mehr Schleifen durch diese elegante Syntax ersetzen.

Listenverständnisse gegen Lambda-Funktionen

Listenverständnis ist nicht die einzige Möglichkeit, an Listen zu arbeiten. Verschiedene integrierte Funktionen und Lambda-Funktionen können Listen in weniger Codezeilen erstellen und ändern.

Beispiel 3: Verwenden von Lambda-Funktionen in List

 letters = list(map(lambda x: x, 'human')) print(letters)

Wenn wir das Programm ausführen, wird die Ausgabe sein

 ('Mensch')

Listenverständnisse sind jedoch normalerweise besser lesbar als Lambda-Funktionen. Es ist einfacher zu verstehen, was der Programmierer erreichen wollte, wenn Listenverständnisse verwendet werden.

Bedingungen im Listenverständnis

Listenverständnisse können bedingte Anweisungen verwenden, um vorhandene Listen (oder andere Tupel) zu ändern. Wir werden eine Liste erstellen, die mathematische Operatoren, Ganzzahlen und range () verwendet.

Beispiel 4: Verwenden von if mit Listenverständnis

 number_list = ( x for x in range(20) if x % 2 == 0) print(number_list)

Wenn wir das obige Programm ausführen, lautet die Ausgabe:

 (0, 2, 4, 6, 8, 10, 12, 14, 16, 18)

Die Liste number_list wird mit den Elementen im Bereich von 0 bis 19 gefüllt, wenn der Wert des Elements durch 2 teilbar ist.

Beispiel 5: Verschachtelte IF mit Listenverständnis

 num_list = (y for y in range(100) if y % 2 == 0 if y % 5 == 0) print(num_list)

Wenn wir das obige Programm ausführen, lautet die Ausgabe:

 (0, 10, 20, 30, 40, 50, 60, 70, 80, 90)

Hier Listenverständnisprüfungen:

  1. Ist y durch 2 teilbar oder nicht?
  2. Ist y durch 5 teilbar oder nicht?

Wenn y beide Bedingungen erfüllt, wird y an num_list angehängt.

Beispiel 6: if… else Mit Listenverständnis

 obj = ("Even" if i%2==0 else "Odd" for i in range(10)) print(obj)

Wenn wir das obige Programm ausführen, lautet die Ausgabe:

 ('Gerade', 'Ungerade', 'Gerade', 'Ungerade', 'Gerade', 'Ungerade', 'Gerade', 'Ungerade', 'Gerade', 'Ungerade')

Here, list comprehension will check the 10 numbers from 0 to 9. If i is divisible by 2, then Even is appended to the obj list. If not, Odd is appended.

Nested Loops in List Comprehension

Suppose, we need to compute the transpose of a matrix that requires nested for loop. Let’s see how it is done using normal for loop first.

Example 7: Transpose of Matrix using Nested Loops

 transposed = () matrix = ((1, 2, 3, 4), (4, 5, 6, 8)) for i in range(len(matrix(0))): transposed_row = () for row in matrix: transposed_row.append(row(i)) transposed.append(transposed_row) print(transposed)

Output

 ((1, 4), (2, 5), (3, 6), (4, 8)) 

The above code use two for loops to find transpose of the matrix.

We can also perform nested iteration inside a list comprehension. In this section, we will find transpose of a matrix using nested loop inside list comprehension.

Example 8: Transpose of a Matrix using List Comprehension

 matrix = ((1, 2), (3,4), (5,6), (7,8)) transpose = ((row(i) for row in matrix) for i in range(2)) print (transpose)

When we run the above program, the output will be:

 ((1, 3, 5, 7), (2, 4, 6, 8))

In above program, we have a variable matrix which have 4 rows and 2 columns.We need to find transpose of the matrix. For that, we used list comprehension.

**Note: The nested loops in list comprehension don’t work like normal nested loops. In the above program, for i in range(2) is executed before row(i) for row in matrix. Hence at first, a value is assigned to i then item directed by row(i) is appended in the transpose variable.

Key Points to Remember

  • List comprehension is an elegant way to define and create lists based on existing lists.
  • List comprehension is generally more compact and faster than normal functions and loops for creating list.
  • However, we should avoid writing very long list comprehensions in one line to ensure that code is user-friendly.
  • Denken Sie daran, dass jedes Listenverständnis in for-Schleife umgeschrieben werden kann, aber nicht jedes for-Loop kann nicht in Form von Listenverständnis umgeschrieben werden.

Interessante Beiträge...