Possibile duplicato: Operatore ternario Python
Mi sto addentrando in Python e mi piace molto la brevità della sintassi. Tuttavia, c'è un modo più semplice di scrivere una dichiarazione if
-then
-else
in modo che stia su una sola riga?
Per esempio:
if count == N:
count = 0
else:
count = N + 1
C'è un modo più semplice di scrivere questo? Cioè, in Objective-C lo scriverei come:
count = count == N ? 0 : count + 1;
C'è qualcosa di simile per Python?
Aggiornamento
So che in questo caso posso usare count == (count + 1) % N
.
Sto chiedendo la sintassi generale.
Questo è più specificamente un'espressione operatore ternario che un if-then, ecco la sintassi python
value_when_true if condition else value_when_false
Esempio migliore: (grazie Mr. Burns)
'Sì' if fruit == 'Apple' else 'No'
Ora con assegnazione e contrasto con la sintassi 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
- l'operatore ternario. Anche se direi che la tua soluzione è più leggibile di questa.
Sintassi ternaria generale:
value_true if <test> else value_false
Un altro modo può essere:
[value_false, value_true][<test>]
ad esempio
count = [0,N+1][count==N]
Questo valuta entrambi i rami prima di sceglierne uno. Per valutare solo il ramo scelto:
[lambda: value_false, lambda: value_true][<test>]()
ad esempio:
count = [lambda:0, lambda:N+1][count==N]()