Python?那么:还有语法吗?

2024-10-16 20:52:44 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Python Ternary Operator

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

例如

return (i < x) ? i : x

如果i<;x,它将返回i,否则它将返回x。我喜欢这样,因为它在许多情况下比后面的较长语法要紧凑得多。

if (i < x)
  return i
else
  return x

在python中可以使用这种语法吗?如果可以,如何使用?


Tags: lt语言returnif表达式语法情况java
3条回答

另一个答案是,Python的版本是:

i if i < x else x

(当然,对于这个特殊的例子,人们更喜欢写作 min(i, x),因为眼睛更容易看到)

但是,这个表达式语法刚刚在python2.5上提供(我想是在2004左右)。在此之前,使用了以下习惯用法-但应注意,因为它容易出错:

i < x and i or x-因为逻辑运算符“和”实际上计算为其链上的最后一个真值-因此,如果表达式为真,i < x and i计算为i-并且or运算符计算为链上的第一个真值。在这种情况下,如果i < x是false,那么i< x and i也是,第一个true值是x

很容易看出这个构造有多容易出错,因为如果i的布尔值为false(例如,如果i==0),那么它将返回x,即使i < x的位置为true。

我自己,在那些日子里,曾经写过这个结构:

(x,i)[i<;x]

表达式“i<;x”的数值为“1”(true)或“0”(false),我使用此proeprty将其用作前一个元组的索引。这种方法的问题是,它总是对元组上的两个表达式求值,即使它只使用其中的一个(如果函数调用它的表达式可能变得昂贵,甚至冲突)

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

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

那也会起作用的。

是的,看起来是这样的:

return i if i < x else x

它在python中被称为条件运算符。

相关问题 更多 >