Python if-else简写

lea*_*ner 88 python python-2.7

可能重复:
Python中的三元条件运算符

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

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

显然,当任何一个ij达到限制时,代码将突破循环.我需要循环的值ij循环外的值.

我必须真的这样做

x=0
...
if A[i] > B[j]:
  x = A[i]
  i+=1
else:
  x = B[j]
  j+=1
Run Code Online (Sandbox Code Playgroud)

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

除了以上所述,我可以让Python支持类似的东西

a,b=5,7
x = a > b ? 10 : 11
Run Code Online (Sandbox Code Playgroud)

Lev*_*sky 213

最可读的方式是

x = 10 if a > b else 11
Run Code Online (Sandbox Code Playgroud)

但你也可以使用andor:

x = a > b and 10 or 11
Run Code Online (Sandbox Code Playgroud)

然而,"Python的禅宗"说"可读性很重要",所以第一种方式.

此外,如果您放置一个变量而不是10并且它的计算结果为,则和 - 或技巧将失败False.

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

if A[i] > B[j]:
  x = A[i]
  i += 1
else:
  x = A[j]
  j += 1
Run Code Online (Sandbox Code Playgroud)

除非你把ij容器中.但是,如果你向我们展示你为什么需要它,你很可能会发现它.

  • 在Python 2.5中添加 (4认同)

Don*_*sto 11

试试这个:

x = a > b and 10 or 11
Run Code Online (Sandbox Code Playgroud)

这是一个执行样本:

>>> a,b=5,7
>>> x = a > b and 10 or 11
>>> print x
11
Run Code Online (Sandbox Code Playgroud)

  • `10如果a> b其他11`.无需诉诸布尔运算符. (22认同)