我有一个值val
,我想检查它是否是多个值之一(1
,2
或3
)。通常我会这样做:
if val in [1,2,3]:
但是,如果满足其他条件(3
),我只想包含test
。不合理地说,就是这样:
if val in [1,2,3] and (test if val == 3 else True):
这是一个相当尴尬的比较(并不是非常易读),而且我测试了val == 3
两次,所以有没有办法一次性完成所有操作? (即更有效率)提前致谢,
答案 0 :(得分:6)
if val in [1,2] or (val == 3 and test):
# do it
比and
效率更高,更清晰。 or
运算符表达式分为2部分,右部分仅在左侧为False
时进行评估。来自python docs:
表达式x或y首先计算x;如果x为真,则其值为 回;否则,评估y并得到结果值 返回。