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

2024-04-16 07:16:36 发布

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

我有一个IF,OR语句:

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

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


Tags: orif语句doelsesomethingdifferent
3条回答

你可以用if 5 in [a, b, c,d]:

如果你想检查不同数量的变量的相等性any()是一个安全的选择

if any([a == 1, b == 2, c == 3, d == 4]):

您可以使用element in list语法。另外,如果只想打印truefalse,则不需要使用if else语句。您可以直接打印布尔值:

print(5 in [a, b, c, d])
# False

如果需要小写字符串:

print(str(5 in [a, b, c, d]).lower())
# "false"

最后,如果您经常需要此测试,可以将值打包到set

a = 1
b = 2
c = 3
d = 4
all_values = set([a, b, c, d])

您需要花费一些时间来创建集合,但是查询5 in all_values应该会变得更快,尤其是在有许多变量的情况下。你知道吗

在我看来这更可取。你知道吗

if any(x==5 for x in (a, b, c, d)):
   ...

你可以看看documentation

类似地,如果要执行多个and检查,可以使用具有相同语法的all()。你知道吗

最后,对于你的特殊情况,既然你唯一想做的是会员资格测试,我会同意@Eric发布的答案。我的方法更通用。你知道吗

相关问题 更多 >