Posible duplicado: Operador ternario de Python
Me estoy iniciando en Python y me gusta mucho la sencillez de la sintaxis. Sin embargo, ¿hay una manera más fácil de escribir una declaración si
-entonces
-según
para que quepa en una línea?
Por ejemplo:
if count == N:
count = 0
else:
count = N + 1
¿Hay una forma más sencilla de escribir esto? Es decir, en Objective-C escribiría esto como
count = count == N ? 0 : count + 1;
¿Hay algo similar para Python?
Actualización
Sé que en este caso puedo utilizar count == (count + 1) % N
.
Pregunto por la sintaxis general.
Esto es más específicamente una expresión operador ternario que un if-then, aquí está la sintaxis de python
value_when_true if condition else value_when_false
Mejor ejemplo: (gracias Sr. Burns)
'Sí' si fruta == 'Manzana' sino 'No'
Ahora con asignación y contraste con la sintaxis 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
- ...el operador ternario. Aunque yo diría que su solución es más legible que esto.
Sintaxis ternaria general:
value_true if <test> else value_false
Otra forma puede ser:
[value_false, value_true][<test>]
por ejemplo
count = [0,N+1][count==N]
Esto evalúa ambas ramas antes de elegir una. Para evaluar sólo la rama elegida:
[lambda: value_false, lambda: value_true][<test>]()
por ejemplo
count = [lambda:0, lambda:N+1][count==N]()