我想在python中执行以下操作:
while( i < someW && j < someX){
int x = A[i] > B[j]? A[i++]:B[j++];
....
}
显然,当i
或j
达到限制时,代码将突破循环。我需要循环外的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
答案 0 :(得分:183)
最易读的方式是
x = 10 if a > b else 11
但您也可以使用and
和or
:
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
除非您将i
和j
放入容器中。但是,如果你向我们展示你为什么需要它,那很可能你没有。
答案 1 :(得分:11)
试试这个:
x = a > b and 10 or 11
这是一个执行样本:
>>> a,b=5,7
>>> x = a > b and 10 or 11
>>> print x
11