operator - Python if-else shorthand
simplify if else python (2)
Posible duplicado:
Operador condicional ternario en Python
Quiero hacer lo siguiente en Python:
while( i < someW && j < someX){
int x = A[i] > B[j]? A[i++]:B[j++];
....
}
Claramente, cuando i o j alcanzan un límite, el código saldrá del ciclo. Necesito los valores de i y j fuera del ciclo.
Debo realmente hacer
x=0
...
if A[i] > B[j]:
x = A[i]
i+=1
else:
x = B[j]
j+=1
¿O alguien sabe de una manera más corta?
Además de lo anterior, ¿puedo hacer que Python admita algo similar a
a,b=5,7
x = a > b ? 10 : 11
La forma más legible es
x = 10 if a > b else 11
pero puedes usar and y or , también:
x = a > b and 10 or 11
El "Zen de Python" dice que "la legibilidad cuenta", así que ve por el primer camino.
Además, el and-o truco fallará si coloca una variable en lugar de 10 y se evalúa como False .
Sin embargo, si hay más de una asignación que depende de esta condición, será más legible escribirla como lo ha hecho:
if A[i] > B[j]:
x = A[i]
i += 1
else:
x = A[j]
j += 1
a menos que pones i y j en un contenedor. Pero si nos muestra por qué lo necesita, es posible que no lo haga.
Prueba esto:
x = a > b and 10 or 11
Esta es una muestra de ejecución:
>>> a,b=5,7
>>> x = a > b and 10 or 11
>>> print x
11