2024-10-16 20:52:44 发布
网友
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中可以使用这种语法吗?如果可以,如何使用?
另一个答案是,Python的版本是:
i if i < x else x
(当然,对于这个特殊的例子,人们更喜欢写作 min(i, 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 < x and i or x
i < x and i
i
or
i < x
i< x and i
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 if cond else y)
>>> x = 0 >>> y = 1 >>> print("a" if x < y else "b") a
那也会起作用的。
是的,看起来是这样的:
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
-因为逻辑运算符“和”实际上计算为其链上的最后一个真值-因此,如果表达式为真,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)
,例如那也会起作用的。
是的,看起来是这样的:
它在python中被称为条件运算符。
相关问题 更多 >
编程相关推荐