Listenverständnisse mit bedingten Anweisungen
In Python bieten Listenverständnisse eine kompakte Möglichkeit, neue Listen zu generieren. Bei der Verwendung von bedingten Anweisungen innerhalb dieser Verständnisse ist es jedoch wichtig, die richtige Syntax einzuhalten, um Fehler zu vermeiden.
Problem: Iterables vergleichen
Angenommen, wir haben zwei Iterables, a und b, und wir möchten eine neue Liste erstellen, die Elemente enthält, die in beiden Iterables vorkommen. Wir versuchen den folgenden Code:
<code class="python">a = ('q', 'r') b = ('q') print([ y if y not in b for y in a])</code>
Syntaxfehler
Dieser Code erzeugt jedoch einen ungültigen Syntaxfehler, der auf ein Problem mit der im Verständnis verwendeten Lambda-Funktion hinweist .
Lösung: Neuordnung des Verständnisses
Die korrekte Syntax für die Verwendung einer bedingten Anweisung in einem Listenverständnis besteht darin, den if-Ausdruck nach der for-Klausel zu platzieren. In unserem Fall wäre der korrigierte Code:
<code class="python">[y for y in a if y not in b]</code>
Dieses Verständnis iteriert über a und fügt der neuen Liste nur dann Elemente hinzu, wenn sie in b nicht vorhanden sind. Das Ergebnis sollte wie erwartet ['r'] ergeben.
Alternative Syntax
Alternativ können wir einen ternären If-Else-Operator verwenden, um die darin enthaltene bedingte Logik zu handhaben das Listenverständnis:
<code class="python">[y if y not in b else None for y in a]</code>
Dieser Code erstellt eine neue Liste, in der Elemente, die in b nicht vorhanden sind, hinzugefügt werden, während andere Elemente None-Werte erhalten.
Das obige ist der detaillierte Inhalt vonWas ist die richtige Syntax für bedingte Anweisungen in Listenverständnissen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!