145

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

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

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

显然,当任一ij达到限制时,代码将跳出循环。我需要循环之外的i值。j

我真的必须这样做吗

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
4

2 回答 2

323

最易读的方式是

x = 10 if a > b else 11

但你也可以使用andand or

x = a > b and 10 or 11

不过,“Python 之禅”说“可读性很重要”,所以选择第一种方式。

此外,如果您放置一个变量而不是10它的计算结果为,and-or 技巧将失败False

但是,如果更多的分配取决于此条件,那么按照您的方式编写它会更具可读性:

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

除非您将i其放入j容器中。但如果你告诉我们你为什么需要它,很可能你不需要它。

于 2013-01-22T15:23:45.437 回答
18

尝试这个:

x = a > b and 10 or 11

这是一个执行示例:

>>> a,b=5,7
>>> x = a > b and 10 or 11
>>> print x
11
于 2013-01-22T15:22:48.023 回答