„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Listenverständnis in Python verstehen

Listenverständnis in Python verstehen

Veröffentlicht am 27.08.2024
Durchsuche:170

Understanding List Comprehensions in Python

Listenverständnisse sind eine leistungsstarke und effiziente Methode zum Erstellen von Listen in Python.

Sie bieten eine prägnante und lesbare Möglichkeit, Listen basierend auf vorhandenen Iterables zu generieren.

In diesem Artikel werde ich die Nuancen des Listenverständnisses, ihre Vorteile gegenüber herkömmlichen Schleifen und verschiedene praktische Anwendungen untersuchen.


Was sind Listenverständnisse?

Listenverständnisse sind eine syntaktisch kompakte Möglichkeit, Listen zu erstellen, indem Schleifen und bedingte Logik in einer einzigen Codezeile kombiniert werden.

Dies führt zu einer lesbareren und aussagekräftigeren Möglichkeit, Listen zu generieren, sodass die Absicht des Codes auf einen Blick leichter zu verstehen ist.


Struktur und Beispiele

Die Grundstruktur eines Listenverständnisses ist wie folgt:

[expression for item in iterable if condition]

Lassen Sie uns die Komponenten dieser Struktur aufschlüsseln:

  • Ausdruck: Dies ist der Wert, der der neuen Liste für jede Iteration hinzugefügt wird.
  • für Element im Iterable: Dies ist das Schleifenkonstrukt, das jedes Element im Iterable durchläuft (z. B. Liste, Tupel, Menge, Wörterbuch oder Generator).
  • if-Bedingung: Dies ist eine optionale bedingte Anweisung, die die Elemente filtert, die in die neue Liste aufgenommen werden sollen.

Beispiele:

Grundlegendes Listenverständnis:

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)  

# Output: [1, 4, 9, 16, 25]

In diesem Beispiel wird Listenverständnis verwendet, um eine neue Liste von Quadraten aus einer vorhandenen Liste von Zahlen zu erstellen.

Listenverständnis mit einer Bedingung:

numbers = [1, 2, 3, 4, 5]
even_squares = [x**2 for x in numbers if x % 2 == 0]
print(even_squares)  

# Output: [4, 16]

In diesem Beispiel werden die Zahlen so gefiltert, dass nur gerade Zahlen enthalten sind, die dann quadriert werden. Dadurch wird die Verwendung einer if-Bedingung in einem Listenverständnis demonstriert.


Vorteile von Listenverständnissen gegenüber herkömmlichen Schleifen

Listenverständnisse bieten mehrere Vorteile gegenüber herkömmlichen Schleifen:

  • Kürze: Listenverständnisse sind prägnanter und einfacher zu lesen als herkömmliche Schleifen, wodurch Ihr Code wartbarer und leichter zu verstehen ist.
  • Leistung: Listenverständnisse sind oft schneller als herkömmliche Schleifen, da sie für die Erstellung von Listen optimiert sind.
  • Lesbarkeit: Die Absicht eines Listenverständnisses ist klarer als die einer herkömmlichen Schleife, sodass andere Ihren Code leichter verstehen können.

Praktische Anwendungen

Listenverständnisse können auf verschiedene Arten zur Manipulation und Verarbeitung von Daten verwendet werden.

Hier sind einige häufige Anwendungsfälle:
Listen filtern:

words = ["apple", "banana", "cherry", "date"]
short_words = [word for word in words if len(word) 



Dieses Beispiel filtert eine Liste von Wörtern, um nur solche mit 5 oder weniger Zeichen einzuschließen.

Listen transformieren:

temperatures_celsius = [0, 20, 30, 40]
temperatures_fahrenheit = [(temp * 9/5)   32 for temp in temperatures_celsius]
print(temperatures_fahrenheit)  

# Output: [32.0, 68.0, 86.0, 104.0]

Dieses Beispiel konvertiert eine Liste von Temperaturen von Celsius in Fahrenheit.

Verschachtelte Listenverständnisse:

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)  

# Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

In diesem Beispiel wird eine 2D-Liste (Matrix) mithilfe verschachtelter Listenverständnisse in eine 1D-Liste reduziert.

Listen von Tupeln erstellen:

pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs) 

# Output: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

Dieses Beispiel generiert eine Liste aller möglichen Zahlenpaare (Tupel) aus zwei Bereichen.

Duplikate entfernen:

list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_list = list(set([x for x in list_with_duplicates]))
print(unique_list)  

# Output: [1, 2, 3, 4, 5]

In diesem Beispiel werden Duplikate aus einer Liste entfernt, indem es in eine Menge und wieder zurück in eine Liste umgewandelt wird.


Fortgeschrittenere Themen

Lassen Sie uns nun einige fortgeschrittenere Themen zu Varianten des Listenverständnisses untersuchen.

Generatorausdrücke
Generatorausdrücke ähneln Listenverständnissen, generieren jedoch eine Iterable anstelle einer Liste.

Dies kann bei der Arbeit mit großen Datensätzen speichereffizienter sein, da Elemente im laufenden Betrieb generiert werden und nicht auf einmal im Speicher gespeichert werden.

numbers = [1, 2, 3, 4, 5]
squares_generator = (x**2 for x in numbers)

for square in squares_generator:
    print(square)

# Output
# 1
# 4
# 9
# 16
# 25

Wörterbuch und Mengenverständnis
Python unterstützt auch Wörterbuch- und Mengenverständnisse, mit denen Sie Wörterbücher und Mengen auf prägnante Weise erstellen können, ähnlich wie Listenverständnisse.

# Dictionary comprehension
numbers = [1, 2, 3, 4, 5]
squares_dict = {x: x**2 for x in numbers}
print(squares_dict)  

# Output: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}



# Set comprehension
list_with_duplicates = [1, 2, 2, 3, 4, 4, 5]
unique_set = {x for x in list_with_duplicates}
print(unique_set)  

# Output: {1, 2, 3, 4, 5}


Abschluss

Listenverständnisse sind ein leistungsstarkes und vielseitiges Tool in Python, mit dem Sie Listen auf prägnante und lesbare Weise erstellen können.

Sie können Ihren Code vereinfachen, die Leistung verbessern und die Manipulation und Verarbeitung von Daten erleichtern.

Durch die Beherrschung des Listenverständnisses und seiner erweiterten Funktionen können Sie effizienteren und saubereren Python-Code schreiben.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/devasservice/understanding-list-comprehensions-in-python-1b2p?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3