Python if-else short-hand

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