首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -是否有更优雅的方法来编写包含多个OR的IF语句?

Python -是否有更优雅的方法来编写包含多个OR的IF语句?
EN

Stack Overflow用户
提问于 2017-05-03 11:15:01
回答 4查看 118关注 0票数 1

我有这个如果,或声明:

代码语言:javascript
复制
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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-03 11:17:35

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

代码语言:javascript
复制
print(5 in [a, b, c, d])
# False

如果您想要小写字符串:

代码语言:javascript
复制
print(str(5 in [a, b, c, d]).lower())
# "false"

最后,如果您经常需要此测试,则可以将这些值打包到设置中。

代码语言:javascript
复制
a = 1
b = 2
c = 3
d = 4
all_values = set([a, b, c, d])

您将投入一些时间来创建集合,但是查询5 in all_values应该会变得更快,特别是如果有许多变量。

票数 6
EN

Stack Overflow用户

发布于 2017-05-03 11:16:26

这在我看来会更好。

代码语言:javascript
复制
if any(x==5 for x in (a, b, c, d)):
   ...

你可以看看文档

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

最后,针对您的特殊情况,而且由于您只想做一次成员资格测试,我将使用@Eric发布的答案。我的方法比较通用。

票数 4
EN

Stack Overflow用户

发布于 2017-05-03 11:18:30

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43758469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档