Python if-else short-hand [duplicado]
possível duplicado:
operador ternário condicional em Python
quero fazer o seguinte em python:
while( i < someW && j < someX){
int x = A[i] > B[j]? A[i++]:B[j++];
....
}
claramente, quando i
ou j
atinge um limite, o código vai sair do loop. Preciso dos valores de i
e j
fora do circuito.
tenho mesmo de fazer
x=0
...
if A[i] > B[j]:
x = A[i]
i+=1
else:
x = B[j]
j+=1
Ou alguém sabe de um caminho mais curto?
além do acima, posso pedir ao Python para suportar algo semelhante a
a,b=5,7
x = a > b ? 10 : 11
2 answers
A maneira mais legível é
x = 10 if a > b else 11
Mas pode usar and
e or
também:
x = a > b and 10 or 11
O " Zen de Python "diz que" a legibilidade conta", então vá pela primeira via.
Também, o and-OR trick vai falhar se você colocar uma variável em vez de 10
e ele avalia para False
.
No entanto, se mais do que a atribuição depende desta condição, será mais legível escrevê-la como você tem:
if A[i] > B[j]:
x = A[i]
i += 1
else:
x = A[j]
j += 1
A menos que ponhas i
e j
num recipiente. Mas se nos mostrares porque Precisas dele, pode acontecer que não precises.
Tenta isto:
x = a > b and 10 or 11
Esta é uma amostra de execução:
>>> a,b=5,7
>>> x = a > b and 10 or 11
>>> print x
11