Python有IF-ELSE的更简洁的表达式吗

Python if-else short-hand

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Ternary conditional operator in Python

我想在python中执行以下操作:

1
2
3
4
while( i < someW && j < someX){
   int x = A[i] > B[j]? A[i++]:B[j++];
   ....
}

很明显,当ij达到极限时,代码将跳出循环。我需要循环外的ij的值。

我真的要吗

1
2
3
4
5
6
7
8
x=0
...
if A[i] > B[j]:
  x = A[i]
  i+=1
else:
  x = B[j]
  j+=1

或者有人知道更短的路吗?

除了上面的内容,我可以让python支持类似于

1
2
a,b=5,7
x = a > b ? 10 : 11


最易读的方法是

1
x = 10 if a > b else 11

但是你也可以使用andor

1
x = a > b and 10 or 11

"python的禅"说"可读性很重要",不过,还是从第一个角度出发吧。

另外,如果您将变量而不是10,并且它的值为False,那么and或trick将失败。

但是,如果超过赋值取决于此条件,则可以更容易地按照您的方式编写它:

1
2
3
4
5
6
if A[i] > B[j]:
  x = A[i]
  i += 1
else:
  x = A[j]
  j += 1

除非你把ij放在容器里。但如果你告诉我们你为什么需要它,很可能你不需要。


试试这个:

1
x = a > b and 10 or 11

这是一个执行示例:

1
2
3
4
>>> a,b=5,7
>>> x = a > b and 10 or 11
>>> print x
11