Python if else速记

Python if else速记,python,python-2.7,Python,Python 2.7,可能重复: 我想在python中执行以下操作: while( i < someW && j < someX){ int x = A[i] > B[j]? A[i++]:B[j++]; .... } 或者有人知道一条更短的路吗 除了上面提到的,我能让Python支持类似于 a,b=5,7 x = a > b ? 10 : 11 试试这个: x = a > b and 10 or 11 这是一个执行示例: >>> a

可能重复:

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

while( i < someW && j < someX){
   int x = A[i] > B[j]? A[i++]:B[j++];
   ....
}
或者有人知道一条更短的路吗

除了上面提到的,我能让Python支持类似于

a,b=5,7
x = a > b ? 10 : 11
试试这个:

x = a > b and 10 or 11
这是一个执行示例:

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

最具可读性的方法是

x = 10 if a > b else 11
但是您也可以使用
以及

x = a > b and 10 or 11
不过,“Python禅宗”说“可读性很重要”,所以还是走第一条路吧

此外,如果将变量而不是
10
,并且其计算结果为
False
,则and或技巧将失败

但是,如果不止一个赋值取决于此条件,那么按照您的情况编写它将更具可读性:

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

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

10如果a>b否则11
。不需要使用布尔运算符。@MartijnPieters:很好,先生。:)谢谢这适用于我问题的第二部分。投票!这在内部是如何工作的:x=a>b和10或1011@MartijnPieters:第二部分当然是重复的,但我不确定第一部分。@DSM:好吧,一旦OP发现了更多的python结构和循环,就不需要第一部分了。。你打算写一篇关于迭代器的完整介绍吗?@DSM:我也没看到下面有人提到这一部分@Martijn Pieters,虽然我很感谢所有的参与,但你的评论相当便宜。如果你对第一部分有答案,就把它贴出来。嘲笑不是推理。@user1612593:对不起,我不是故意嘲笑你。习惯一门新语言和它的习语需要时间。这里的上下文太少,无法给出简洁而有意义的答案;在惯用Python中,您通常不会遇到类似的情况。谢谢。这适用于我问题的第二部分。投票!我进行了编辑,以显示我需要while循环之外的
j
I
x=a>b和10或11
在一组特定的问题中也能正常工作,因为任何计算结果为false而不是
10
的操作都会导致失败,例如,字符串。
[i这在内部是如何工作的:x=a>b和10或11
if A[i] > B[j]:
  x = A[i]
  i += 1
else:
  x = A[j]
  j += 1