本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Python Ternary Operator
在一些语言中,包括Java、C/C++、C等,可以根据内嵌布尔表达式的结果赋值。
例如,
return (i < x) ? i : x
如果i
if (i < x)
return i
else
return x
是否可以在Python中使用这种语法?如果可以,如何使用?
您可以使用(x if cond else y),例如
>>> x = 0
>>> y = 1
>>> print("a" if x < y else"b")
a
这将起作用,lambda也会起作用。
是的,看起来像这样:
return i if i < x else x
它在Python中被称为条件运算符。
正如另一个答案所述,python的版本是:
i if i < x else x
(当然,对于这个特定的例子,人们更喜欢写作min(i, x),因为它更容易眼睛)
然而,这个表达式语法刚刚在Python2.5上可用(我想大概是2004年左右)。在此之前,使用了以下成语-但应小心,因为它容易出错:
i < x and i or x—因为逻辑运算符"and"实际上计算其链上的最后一个真值—因此,如果表达式为真,则i < x and i计算为i,or运算符计算为链上的第一个真值。在这种情况下,如果i < x为假,那么i< x and i也是假的,第一个真值为x。
很容易看出这个构造有多容易出错,因为如果i的布尔值为假(例如,如果i=0),那么它将返回x,即使i < x为真。
在那些日子里,我自己也曾写过这个结构:
(x,i)[i表达式"i
python 2.5中引入了a if b else c语法。大多数人已经升级到最新版本,但在旧代码中,您可能会发现另一种方法:
some_var = a
如果要使用这种语法,请记住,a的计算结果不能为false。
我认为它是在2.7之前引入的(是2.5吗?).它在2.6中确实有效,但在2.4中不起作用。不管怎样,加1。
你说得对-那是2.5版。感谢您的更正。
python中的三元运算符。
a if b else c
>>> a=1
>>> b=2
>>> a if a
1
>>> a if a>b else b
2
在python中尝试:
return i if i < x else x
这与爪哇、C、C++ C中的以下表达式完全等价。
return i < x ? i : x;
了解更多关于Python条件表达式的信息。