Python—有没有更优雅的方法来编写包含多个或多个

Python—有没有更优雅的方法来编写包含多个或多个,python,Python,我有这样一个假设或陈述: a = 1 b = 2 c = 3 d = 4 if a == 5 or b == 5 or c == 5 or d == 5: # do something else: # do something different 我想知道这是不是最好的写法?在我看来,这是最好的 if any(x==5 for x in (a, b, c, d)): ... 你可以看一下 类似地,如果要执行多个和检查,可以使用相同语法的all() 最后,对于你的特殊情

我有这样一个假设或陈述:

a = 1
b = 2
c = 3
d = 4

if a == 5 or b == 5 or c == 5 or d == 5:
    # do something
else:
    # do something different

我想知道这是不是最好的写法?

在我看来,这是最好的

if any(x==5 for x in (a, b, c, d)):
   ...
你可以看一下

类似地,如果要执行多个
检查,可以使用相同语法的
all()


最后,对于你的特殊情况,因为你唯一想做的就是会员资格测试,我会选择@Eric发布的答案。我的方法更为通用。

在我看来,这更可取

if any(x==5 for x in (a, b, c, d)):
   ...
你可以看一下

类似地,如果要执行多个
检查,可以使用相同语法的
all()


最后,对于你的特殊情况,因为你唯一想做的就是会员资格测试,我会选择@Eric发布的答案。我的方法更通用。

您可以在list语法中使用
元素。此外,如果只想打印
true
false
,则无需使用
if-else
语句。您可以直接打印布尔值:

print(5 in [a, b, c, d])
# False
如果需要小写字符串:

print(str(5 in [a, b, c, d]).lower())
# "false"
最后,如果您经常需要此测试,可以将值打包到:


您需要花费一些时间来创建集合,但是查询所有值中的
5应该会更快,特别是当有许多变量时。

您可以使用list
语法中的
元素。此外,如果只想打印
true
false
,则无需使用
if-else
语句。您可以直接打印布尔值:

print(5 in [a, b, c, d])
# False
如果需要小写字符串:

print(str(5 in [a, b, c, d]).lower())
# "false"
最后,如果您经常需要此测试,可以将值打包到:


您需要花费一些时间来创建集合,但是查询所有值中的
5应该会更快,特别是当存在许多变量时。

如果[a,b,c,d]中的5,您可以使用

如果您想检查具有不同编号的变量的相等性,
any()
是一种安全的选择


如果有([a==1,b==2,c==3,d==4]):
如果[a,b,c,d]中有5个,您可以使用

如果您想检查具有不同编号的变量的相等性,
any()
是一种安全的选择


如果有([a==1,b==2,c==3,d==4]):
也许只需在
中使用

if 5 in (a,b,c,d):
    print('true')
else:
    print('false')
或者只是

print(5 in (a,b,c,d))

也许只需在
中使用

if 5 in (a,b,c,d):
    print('true')
else:
    print('false')
或者只是

print(5 in (a,b,c,d))

对于过早的优化,使用
集合
而不是
列表
。@Chris_Rands:为了防止这不是100%的讽刺,我添加了一个关于集合的注释。使用
集合
比使用
列表
有什么好处,是不是更快了?@Lewis909有很多变量(比如1000),应该快得多,是的。否则,正如Chris_Rands所提到的,这将是过早的优化。对于过早的优化,使用
集合而不是
列表
@Chris_Rands:为了防止这不是100%的讽刺,我添加了一个关于集合的注释。与
列表相比,使用
集合
有什么好处,它只是更快吗?@Lewis909有很多变量(比如1000),它应该更快,是的。否则,正如Chris_Rands所提到的,这将是过早的优化。我使用
print
作为if语句做某事的示例,我编辑了问题以反映这一点。我使用
print
作为if语句做某事的示例,我编辑了这个问题以反映这一点。我更喜欢这个问题,因为它的可读性优于中的
5[…
解决方案。它还可以很好地概括任何使用
x
的逻辑值表达式,而不仅仅是等式。我很欣赏这个答案,因为学习Python的人看到一个问题的不同解决方案很有用。我更喜欢这个解决方案,因为它的可读性优于中的
5[…
解决方案。它还使用
x
很好地概括了任何逻辑值表达式,而不仅仅是等式。我很欣赏这个答案,因为学习Python的人看到问题的不同解决方案很有用。