Double emploi possible: Opérateur ternaire Python
Je commence tout juste à me familiariser avec Python et j'aime beaucoup la brièveté de sa syntaxe. Cependant, existe-t-il un moyen plus simple d'écrire une instruction "if", "then" et "else" pour qu'elle tienne sur une seule ligne ?
Par exemple :
if count == N:
count = 0
else:
count = N + 1
Existe-t-il une façon plus simple d'écrire ceci ? Je veux dire qu'en Objective-C, je l'écrirais comme suit :
count = count == N ? 0 : count + 1;
Existe-t-il quelque chose de similaire pour Python ?
Mise à jour
Je sais que dans ce cas, je peux utiliser count == (count + 1) % N
.
Je m'interroge sur la syntaxe générale.
Il s'agit plus spécifiquement d'une expression [opérateur ternaire][1] que d'un if-then, voici la syntaxe python
value_when_true if condition else value_when_false
Meilleur exemple: (merci [Mr. Burns][2])
`'Oui' si le fruit =='Pomme' sinon 'Non'``
Maintenant avec affectation et contraste avec la syntaxe if
fruit = 'Apple'
isApple = True if fruit == 'Apple' else False
vs
fruit = 'Apple'
isApple = False
if fruit == 'Apple' : isApple = True
[1] : https://en.wikipedia.org/wiki/%3F:#Python [2] : https://stackoverflow.com/users/253254/joshua-burns
count = 0 if count == N else N+1
- l'opérateur ternaire. Bien que je dirais que ta solution est plus lisible que ça.
Syntaxe ternaire générale :
value_true if <test> else value_false
On peut aussi le faire :
[value_false, value_true][<test>]
par exemple
count = [0,N+1][count==N]
Cette méthode évalue les deux branches avant d'en choisir une. Pour évaluer uniquement la branche choisie :
[lambda: value_false, lambda: value_true][<test>]()
par exemple :
count = [lambda:0, lambda:N+1][count==N]()