219 votes

Comment condenser les if/else en une seule ligne en Python ?

Comment puis-je comprimer un if / else à une ligne en Python ?

365voto

Levon Points 34085

Un exemple de la façon dont Python utilise les expressions "ternaires" :

i = 5 if a > 7 else 0

se traduit par

if a > 7:
   i = 5
else:
   i = 0

Cela s'avère utile lors de l'utilisation de compréhensions de listes, ou parfois dans les instructions de retour, sinon je ne suis pas sûr que cela aide beaucoup à créer un code lisible.

La question de la lisibilité a été longuement débattue dans cette récente question de l'OS. meilleur moyen que d'utiliser l'instruction if-else en python .

Il contient également d'autres astucieux (et quelque peu obscurci ) pour accomplir la même tâche. Il vaut la peine d'être lu rien que sur la base de ces messages.

71voto

sloth Points 40517

Python if peut être utilisé comme opérateur ternaire :

>>> 'true' if True else 'false'
'true'
>>> 'true' if False else 'false'
'false'

43voto

f p Points 1667

Uniquement pour l'utilisation en tant que valeur :

x = 3 if a==2 else 0

o

return 3 if a==2 else 0

29voto

BrenBarn Points 63718

Il y a l'expression conditionnelle :

a if cond else b

mais il s'agit d'une expression, pas d'une déclaration.

Dans les instructions "if", l'élément if (ou elif o else ) peut être écrit sur la même ligne que le corps du bloc si ce dernier ne comporte qu'une seule ligne :

if something: somefunc()
else: otherfunc()

mais cela est déconseillé pour des raisons de formatage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X