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