Python

Listenverständnis in Python

Listenverständnis in Python
Listenverständnisse werden in Python häufig verwendet, um einzeilige Anweisungen zu schreiben, die eine neue Liste oder ein neues Wörterbuch erstellen, indem sie ein iterierbares Objekt durchlaufen. Dieser Artikel erklärt die Verwendung von Listenverständnissen in Python, beginnend mit einer grundlegenden Erklärung der Funktionsweise von for-Schleifen in Python.

For-Schleife in Python

Eine for-Schleifenanweisung in Python iteriert sequentiell über Mitglieder eines beliebigen Objekts, einer Liste, einer Zeichenfolge usw. Im Vergleich zu anderen Programmiersprachen ist seine Syntax viel sauberer und erfordert keine manuelle Definition von Iterationsschritten und das Starten der Iteration. Obwohl es Möglichkeiten gibt, sein Verhalten dem anderer Programmiersprachen anzupassen (wird in diesem Artikel nicht behandelt). Sie können auch eine gewisse Kontrolle über for-Schleifen ausüben, indem Sie Anweisungen wie continue, break, pass usw. verwenden. Unten ist ein einfaches Beispiel für eine for-Schleife in Python:

für x im Bereich (10):
drucken (x)

Die obige for-Schleife druckt zehn Zahlen, beginnend bei 0 und endend bei 9.

Listenverständnis

Listenverständnis ist nichts anderes als eine Kurzform / prägnante Möglichkeit, mehrzeilige for-Schleifen in einer einzeiligen Anweisung zu schreiben. Das folgende Beispiel zum Listenverständnis erstellt eine neue Liste als [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], indem alle Werte von „x“ darin eingeschlossen werden.

Zahlen = [x für x im Bereich(10)]
drucken (Zahlen)

Beachten Sie, dass das Listenverständnis immer eine neue Liste erstellt und die im Ausdruck verwendeten ursprünglichen Iterables nicht ändert. Ein typischer Listenverständnisausdruck muss eine „for“-Klausel haben und kann von „if“- und „else“-Bedingungsanweisungen folgen. Ohne ein Listenverständnis zu verwenden, wird das obige Beispiel wie folgt geschrieben:

Zahlen = []
für x im Bereich (10):
Zahlen.anhängen(x)
drucken (Zahlen)

Leistung und Lesbarkeit

Listenverständnisse sind schneller als für Schleifen. Wenn Sie jedoch nicht über Hunderttausende von Elementen iterieren, werden Sie keine größeren Leistungsverbesserungen bemerken. Während das Listenverständnis eine prägnante Möglichkeit bietet, for-Schleifen zu schreiben, können komplexe Ausdrücke zu schlechter Lesbarkeit des Codes und erhöhter Ausführlichkeit führen. Es ist wichtig, dass der Code lesbar bleibt, es sei denn, die maximale Leistung ist für Ihr Programm unbedingt erforderlich.

Beispiel: Verwendung von Listenverständnissyntax mit Wörterbüchern und Sets

Ein Python-Wörterbuch ist eine Sammlung von Elementen, die in Schlüssel-Wert-Paaren definiert sind, während ein Satz eine Sammlung eindeutiger Werte ist, bei denen Duplikate nicht zulässig sind. Listenverständnis kann auch mit Python-Wörterbüchern und -Sets verwendet werden. Die Syntax unterscheidet sich geringfügig, anstatt den Ausdruck in eckige Klammern einzuschließen, müssen Sie jetzt geschweifte Klammern verwenden. Sie erhalten auch ein neues Wörterbuch / Set-Objekt anstelle einer neuen Liste.

data = "city": "new york", "name": "john doe"
formatierte_daten = k: v.title() für k,v in Daten.Artikel()
drucken (formatted_data)

Das obige Beispiel konvertiert Zeichenfolgenwerte in die Groß-/Kleinschreibung und erstellt ein neues Wörterbuch namens „formatted_data“, dessen Ausgabe lautet: 'city': 'New York', 'name': 'John Doe'. Sie können das Wörterbuch auch ändern / direkt einstellen, indem Sie die vorhandene Wörterbuchvariable auf der linken Seite angeben.

data = "city": "new york", "name": "john doe"
Daten = k: v.title() für k,v in Daten.Artikel()
drucken (Daten)

Ohne Wörterbuchverständnis würde der Code so aussehen:

data = "city": "new york", "name": "john doe"
formatierte_daten =
für k, v in Daten.Artikel():
formatierte_daten[k] = v.Titel()
drucken (formatted_data)

Da es in Sets keine Schlüssel-Wert-Paare gibt, kann ein Set-Verständnis genauso wie ein Listen-Verständnis definiert werden. Der einzige Unterschied ist die Verwendung von geschweiften Klammern.

Beispiel: Mehrere For-Schleifen in einem Listenverständnis

Das oben erwähnte Beispiel zum Listenverständnis ist einfach und verwendet eine einzelne „for“-Anweisung. Unten ist ein Beispiel, das mehrere for-Schleifen und eine bedingte „if“-Anweisung verwendet.

Adjektive = ["Disco", "Eoan", "Focal", "Artful"]
Tiere = ["Dingo", "Hermelin", "Fossa", "Biber"]
Codenamen = [x + " " + y für x in Adjektiven für y in Tieren wenn y.beginntmit(x[0])]
drucken (Codenamen)

Der Code zeigt ['Disco Dingo', 'Eoan Hermine', 'Focal Fossa'] als Ausgabe an. Die beiden for-Schleifen gehen über „Adjektive“- und „Tiere“-Listen und ihre Mitglieder werden nur dann mit einem Leerzeichen verbunden, wenn der Anfangsbuchstabe beider Wörter gleich ist. Ohne Listenverständnis würde der Code so aussehen:

Adjektive = ["Disco", "Eoan", "Focal", "Artful"]
Tiere = ["Dingo", "Hermelin", "Fossa", "Biber"]
Codenamen = []
für x in Adjektiven:
für y bei Tieren:
wenn du.beginntmit(x[0]):
Codenamen.anhängen(x + " " + y)
drucken (Codenamen)

Beispiel: Listenverständnis mit if-else-Klausel

Das folgende Beispiel zeigt die Verwendung von if- und else-Anweisungen in Listenverständnissen.

number_list = [1, 2, 3, 4]
andere_liste = [5, 6, 7, 8]
result = [True  if (x + y) % 2 == 0 else False für x in number_list für y in other_list]
drucken (Ergebnis)

Beim Durchlaufen zweier Listen prüft das obige Listenverständnis, ob die Summe der Elementepaare gerade ist oder nicht. Wenn Sie den obigen Code ausführen, wird [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] als Ausgabe angezeigt. Ohne Listenverständnis würde der Code so aussehen:

number_list = [1, 2, 3, 4]
andere_liste = [5, 6, 7, 8]
Ergebnis = []
für x in number_list:
für y in einer anderen_liste:
wenn (x + y) % 2 == 0:
Ergebnis.anhängen(wahr)
sonst:
Ergebnis.anhängen(falsch)
drucken (Ergebnis)

Fazit

Listenverständnis bietet eine gute Möglichkeit, saubere und prägnante Schleifenanweisungen zu schreiben. Sie können jedoch schnell komplex und schwer verständlich werden, wenn mehrere Schleifen und bedingte Anweisungen verwendet werden. Am Ende kommt es auf den Komfort eines Programmierers an, aber im Allgemeinen ist es eine gute Idee, expliziten, lesbaren und leicht zu debuggenden Code zu schreiben, anstatt übermäßig Abkürzungen zu verwenden.

So zeigen Sie OSD-Overlay in Vollbild-Linux-Apps und -Spielen an
Das Spielen von Spielen im Vollbildmodus oder die Verwendung von Apps im ablenkungsfreien Vollbildmodus kann Sie von relevanten Systeminformationen ab...
Top 5 Karten zur Spielaufnahme
Wir alle haben Streaming-Gameplays auf YouTube gesehen und geliebt. PewDiePie, Jakesepticye und Markiplier sind nur einige der Top-Gamer, die Millione...
So entwickeln Sie ein Spiel unter Linux
Vor einem Jahrzehnt hätten nicht viele Linux-Benutzer vorhergesagt, dass ihr Lieblingsbetriebssystem eines Tages eine beliebte Spieleplattform für kom...