Posible duplicado:
Operador condicional ternario en Python
Quiero hacer lo siguiente en python:
while( i < someW && j B[j]? A[i++]:B[j++]; .... }
Claramente, cuando i
o j
alcanzan un límite, el código saldrá del bucle. Necesito los valores de i
y j
fuera del bucle.
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 soporte 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 y or
, también:
x = a > b and 10 or 11
Sin embargo, el “Zen de Python” dice que “la legibilidad cuenta”, así que ve por el primer camino.
Además, el truco de y / o fallará si pones una variable en lugar de 10
y se evalúa como False
.
Sin embargo, si más de la asignación 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 pongas i
y j
en un contenedor. Pero si nos muestra por qué lo necesita, puede resultar 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