微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python中的逻辑运算符:值1或值2不在列表中

如何解决python中的逻辑运算符:值1或值2不在列表中

为什么变薄不起作用:

if "update" or "create" not in sys.argv:
    usage()
$ python myScript.py update
# In if

$ python myScript.py create
# In if

目标:如何检查列表中既没有“更新”也没有“创建”,然后if语句中的代码运行了?

解决方法

将代码更正为:

if "update" not in sys.argv and "create" not in sys.argv:
    usage()

如果您需要从可能的列表中检查许多值,请对all()使用下一个解决方案:

if all((s not in sys.argv) for s in ["update","create"]):
    usage()

或者是使用sets-intersection的值列表的另一种解决方案,仅当您需要速度或列表很长时才使用下一个解决方案,否则,更易读/可理解的是使用以前使用all()的解决方案:>

if len(set(["update","create"]) & set(sys.argv)) == 0:
   usage()

注意:每次调用此代码时,都会从列表中设置set(list_object)个代码构造,并花费一些时间,因此,如果该代码运行了很多次在a = set(list_a)之类的变量中构造的构造并重用了a后来很多次。

,

您的代码等同于

if "update" or ("create" not in sys.argv):
    usage()

由于“更新”是真实的,因此它将始终评估usage

您的意思可能是

if "update" not in sys.argv and "create" not in sys.argv:
    usage()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。