[PYTHON] Wenn ... sonst in Einschlussnotation

Wenn die Inclusive Notation der Liste eine if ... else-Anweisung enthält (https://docs.python.org/ja/3.7/tutorial/datastructures.html#list-comprehensions), sind Anfänger verwirrt über die Reihenfolge, in der der Code gelesen wird. Ich denke da ist etwas.

>>> x = [8,1,7,2,6,3,5,4]

Einschlussnotation wenn

>>> l1 = [i for i in x if i > 5]
>>> l1
[8, 7, 6]

Hier ist "wenn i> 5" Teil der Einschlussnotation. Entspricht dem folgenden Code:

>>> l1 = []
>>> for i in x:
...     if i > 5:
...             l1.append(i)
...
>>> l1
[8, 7, 6]

Wenn ... sonst in Einschlussnotation

>>> l2 = [i if i > 5 else 0 for i in x]
>>> l2
[8, 0, 7, 0, 6, 0, 0, 0]

Hier ist "i wenn i> 5 else 0" keine inklusive Syntax. Entspricht dem folgenden Code:

>>> l2 = []
>>> for i in x:
...     l2.append(i if i > 5 else 0)
...
>>> l2
[8, 0, 7, 0, 6, 0, 0, 0]

Bedingter Ausdruck

Das obige "i wenn i> 5 else 0" ist eine Operation namens bedingter Ausdruck.

>>> i = 6
>>> i if i > 5 else 0
6
>>> i = 4
>>> i if i > 5 else 0
0

Apropos

Im bedingten Ausdruck werde ich wütend, wenn es nichts anderes gibt.

>>> i = 6
>>> i if i > 5
  File "<stdin>", line 1
    i if i > 5
             ^
SyntaxError: invalid syntax

Damit Selbst wenn Sie wie folgt schreiben, werden Sie auch wütend.

>>> l3 = [i if i > 5 for i in x]
  File "<stdin>", line 1
    l3 = [i if i > 5 for i in x]
                       ^
SyntaxError: invalid syntax

Referenz

if/else in a list comprehension?

Recommended Posts

Wenn ... sonst in Einschlussnotation
FizzBuzz in Listeneinschlussnotation
[Road to Intermediate Python] Verwenden Sie die if-Anweisung in der Listeneinschlussnotation
Beurteilung, ob durch Listeneinschlussnotation
Ich möchte in der Einschlussnotation drucken
Überprüfen Sie, ob die URL in Python vorhanden ist
Python / Wörterbuch> setdefault ()> Hinzufügen, wenn nicht im Wörterbuch