Python的if ? then : else语法

python (bool) ? then : else syntax?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Python Ternary Operator

在一些语言中,包括Java、C/C++、C等,可以根据内嵌布尔表达式的结果赋值。

例如,

1
return (i < x) ? i : x

如果i

1
2
3
4
if (i < x)
  return i
else
  return x

是否可以在Python中使用这种语法?如果可以,如何使用?


您可以使用(x if cond else y),例如

1
2
3
4
>>> x = 0
>>> y = 1
>>> print("a" if x < y else"b")
a

这将起作用,lambda也会起作用。


是的,看起来像这样:

1
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计算为ior运算符计算为链上的第一个真值。在这种情况下,如果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语法。大多数人已经升级到最新版本,但在旧代码中,您可能会发现另一种方法:

1
some_var = a<b and a or c

如果要使用这种语法,请记住,a的计算结果不能为false。


python中的三元运算符。

a if b else c

1
2
3
4
5
6
>>> a=1
>>> b=2
>>> a if a<b else b
1
>>> a if a>b else b
2

在python中尝试:

1
return i if i < x else x

这与爪哇、C、C++ C中的以下表达式完全等价。

1
return i < x ? i : x;

了解更多关于Python条件表达式的信息。