Mise en place d'une simple instruction if-then-else sur une ligne

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.

Solution

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

Commentaires (13)
count = 0 if count == N else N+1

- l'opérateur ternaire. Bien que je dirais que ta solution est plus lisible que ça.

Commentaires (0)

Syntaxe ternaire générale :

value_true if  else value_false

On peut aussi le faire :

[value_false, value_true][]

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][]()

par exemple :

count = [lambda:0, lambda:N+1][count==N]()
Commentaires (10)