Možen dvojnik: Python Ternary Operator
Pravkar se ukvarjam s Pythonom in zelo mi je všeč kratkost sintakse. Vendar ali obstaja lažji način za zapis izjave if
-then
-else
tako, da bi se prilegala eni vrstici?
Na primer:
if count == N:
count = 0
else:
count = N + 1
Ali obstaja preprostejši način zapisa? V Objective-C bi to zapisal kot:
count = count == N ? 0 : count + 1;
Ali obstaja kaj podobnega za Python?
Update
Vem, da lahko v tem primeru uporabim count == (count + 1) % N
.
Sprašujem o splošni sintaksi.
To je natančneje izraz ternarni operator kot izraz if-then, tukaj je sintaksa za python
value_when_true if condition else value_when_false
Boljši primer: (hvala Mr. Burns)
'Da' if fruit == 'Apple' else 'No'
Tudi s pripisom in v nasprotju s sintakso if
fruit = 'Apple'
isApple = True if fruit == 'Apple' else False
vs
fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True
count = 0 if count == N else N+1
- ternarni operator. Čeprav bi rekel, da je tvoja rešitev bolj berljiva kot ta.
Splošna ternarna sintaksa:
value_true if <test> else value_false
Drug način je lahko:
[value_false, value_true][<test>]
npr:
count = [0,N+1][count==N]
Preden izbere eno, ovrednoti obe veji. Če želite ovrednotiti samo izbrano vejo:
[lambda: value_false, lambda: value_true][<test>]()
npr:
count = [lambda:0, lambda:N+1][count==N]()