Möjlig kopia: Python Ternary Operator
Jag har precis börjat med Python och jag gillar verkligen syntaxens korthet. Men finns det ett enklare sätt att skriva ett if
-then
-else
-uttalande så att det ryms på en rad?
Till exempel:
if count == N:
count = 0
else:
count = N + 1
Finns det ett enklare sätt att skriva detta? Jag menar, i Objective-C skulle jag skriva detta som:
count = count == N ? 0 : count + 1;
Finns det något liknande för Python?
uppdatering
Jag vet att jag i detta fall kan använda count == (count + 1) % N
.
Jag frågar om den allmänna syntaxen.
Det är mer specifikt ett ternary operator-uttryck än ett if-then, här är pythonsyntaxen.
value_when_true if condition else value_when_false
Bättre exempel: (tack Mr. Burns)
'Ja' if fruit == 'Apple' else 'No'
Nu med uppdrag och kontrast till if-syntaxen
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
- den ternära operatören. Även om jag skulle säga att din lösning är mer lättläst än detta.
Allmän ternär syntax:
value_true if <test> else value_false
Ett annat sätt kan vara:
[value_false, value_true][<test>]
t.ex:
count = [0,N+1][count==N]
Detta utvärderar båda grenarna innan man väljer en. För att bara utvärdera den valda grenen:
[lambda: value_false, lambda: value_true][<test>]()
t.ex:
count = [lambda:0, lambda:N+1][count==N]()