not - python if==
Poner una declaración simple if-then-else en una línea (5)
Posible duplicado:
Operador Ternario Python
Me estoy metiendo en Python y me gusta mucho la tersura de la sintaxis. Sin embargo, ¿hay una forma más fácil de escribir una declaración if
- then
- else
para que encaje en una sola línea?
Por ejemplo:
if count == N:
count = 0
else:
count = N + 1
¿Hay una forma más sencilla de escribir esto? Quiero decir, en Objective-C escribiría esto como:
count = count == N ? 0 : count + 1;
¿Hay algo similar para Python?
Actualizar
Sé que en este caso puedo usar count == (count + 1) % N
Estoy preguntando acerca de la sintaxis general.
Eso es más específicamente una expresión de operador ternaria que un if-then, aquí está la sintaxis de python
value_when_true if condition else value_when_false
Mejor ejemplo: (gracias Sr. Burns )
''Yes'' if fruit == ''Apple'' else ''No''
Ahora con asignación y contraste con sintaxis si
fruit = ''Apple''
isApple = True if fruit == ''Apple'' else False
vs
fruit = ''Apple''
isApple = False
if fruit == ''Apple'' : isApple = True
Por otra parte, aún puede utilizar la sintaxis "ordinaria" si no y combinarla en una línea con los dos puntos.
if i > 3: print("We are done.")
o
field_plural = None
if field_plural is not None: print("insert into testtable(plural) ''{0}''".format(field_plural))
Sintaxis ternaria general:
value_true if <test> else value_false
Otra forma puede ser:
[value_false, value_true][<test>]
p.ej:
count = [0,N+1][count==N]
Esto evalúa ambas ramas antes de elegir una. Para evaluar solo la rama elegida:
[lambda: value_false, lambda: value_true][<test>]()
p.ej:
count = [lambda:0, lambda:N+1][count==N]()
<execute-test-successful-condition> if <test> else <execute-test-fail-condition>
con su código-fragmento se convertiría,
count = 0 if count == N else N + 1
count = 0 if count == N else N+1
- El operador ternario. Aunque diría que su solución es más legible que esto.