Python if-else简写

时间:2013-01-22 15:20:01

标签: python python-2.7

  

可能重复:
  Ternary conditional operator in Python

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

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

显然,当ij达到限制时,代码将突破循环。我需要循环外的ij值。

我必须真的吗

x=0
...
if A[i] > B[j]:
  x = A[i]
  i+=1
else:
  x = B[j]
  j+=1

或者有人知道更短的方式吗?

除了上述内容,我可以让Python支持类似于

的内容
a,b=5,7
x = a > b ? 10 : 11

2 个答案:

答案 0 :(得分:183)

最易读的方式是

x = 10 if a > b else 11

但您也可以使用andor

x = a > b and 10 or 11

“禅宗之谜”说“可读性很重要”,所以第一种方式就是这样。

此外,如果您放置一个变量而不是10并且评估为False,那么和 - 或技巧将会失败。

但是,如果超过赋值取决于这个条件,那么编写它就会更具可读性:

if A[i] > B[j]:
  x = A[i]
  i += 1
else:
  x = A[j]
  j += 1

除非您将ij放入容器中。但是,如果你向我们展示你为什么需要它,那很可能你没有。

答案 1 :(得分:11)

试试这个:

x = a > b and 10 or 11

这是一个执行样本:

>>> a,b=5,7
>>> x = a > b and 10 or 11
>>> print x
11