Python - 有一种更优雅的方式来编写包含多个OR的IF语句

时间:2017-05-03 11:15:02

标签: 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

我想知道这是否是最好的写作方式?

4 个答案:

答案 0 :(得分:6)

您可以使用element in list语法。此外,如果您只想打印if elsetrue,则无需使用false语句。你可以直接打印布尔值:

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应该变得更快,特别是如果有很多变量。

答案 1 :(得分:4)

这在我眼里会更好。

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

您可以查看documentation

同样,如果您想要执行多项and检查,则可以使用all()语法相同。

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

答案 2 :(得分:1)

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

如果你想检查具有不同数字any()的变量的相等性是一个安全的赌注

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

答案 3 :(得分:1)

也许仅使用in

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

或只是

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