single operator one else assignment python python-2.7

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