Listenverständnis mit if/else: Syntax und Verwendung
Bei der Arbeit mit Listenverständnis in Python kommt es vor, dass if/else-Logik integriert wird um bedingte Operationen abzuwickeln. Dieser Artikel befasst sich mit der korrekten Syntax für solche Szenarien.
Eine häufige Aufgabe besteht darin, eine Liste basierend auf einer Quellsequenz zu erstellen, wobei die folgende for-Schleife ein if/else-Konstrukt enthält:
results = [] for x in xs: results.append(f(x) if x is not None else '')
Dieser Code hängt '' an die Ergebnisliste an, wenn x None ist, und berechnet andernfalls f(x). Das gewünschte Ergebnis lässt sich auch mit einem Listenverständnis erreichen, jedoch mit einer notwendigen Anpassung in der Syntax:
results = [f(x) if x is not None else '' for x in xs]
Der Hauptunterschied liegt in der Reihenfolge der if- und else-Klauseln innerhalb des Listenverständnisses. Die korrekte Syntax erfordert die Platzierung der if-Klausel vor dem for-Teil, gefolgt von der else-Klausel.
Im Allgemeinen lautet die Syntax für ein Listenverständnis mit einer if/else-Bedingung:
[f(x) if condition else g(x) for x in sequence]
Für Listenverständnisse, die nur if-Bedingungen zum Filtern von Elementen aus der Quellsequenz umfassen, die Syntax ist:
[f(x) for x in sequence if condition]
Beachten Sie, dass sich bedingte Ausdrücke, die in der if/else-Syntax von Listenverständnissen verwendet werden, vom if-Konstrukt unterscheiden, das für verwendet wird Filterung. Bedingte Ausdrücke ermöglichen die Auswahl zwischen zwei Ausdrücken basierend auf einer Bedingung, ähnlich dem ternären Operator ?: in anderen Sprachen. Zum Beispiel:
value = 123 print(value, 'is', 'even' if value % 2 == 0 else 'odd')
In diesem Beispiel wird mithilfe eines bedingten Ausdrucks gedruckt, ob der Wert gerade oder ungerade ist.
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