选择第一个为True的Pythonic变量的方法
我有一些变量,我想选择第一个值为真的变量,如果没有的话就返回一个默认值。
比如我有 a
、b
和 c
。我现在的代码是:
result = a if a else (b if b else (c if c else default))
我还考虑过另一种方法:
result = ([v for v in (a, b, c) if v] + [default])[0]
但是这两种方法都感觉有点乱,所以有没有更符合Python风格的方法呢?
7 个回答
5
只要 default
的值是 True:
result = next((x for x in (a, b, c, d , e, default) if x))
17
如果一个变量没有“定义”,你就无法访问它的名字。所以任何提到'a'的地方都会引发一个名为NameError的错误。
另一方面,如果你有类似这样的代码:
a = None
b = None
c = 3
你就可以这样做:
default = 1
r = a or b or c or default
# r value is 3
25
你是想问如何返回第一个值,当 bool(value)==True
时吗?那么你可以依靠一个事实,那就是布尔运算符会返回最后一个被计算的参数:
result = a or b or c or default