python中的逻辑运算符:值1或值2不在列表中
为什么这不起作用: 如果更新或创建不在sys.argv中: 用法 $python myScript.py更新 如果 $python myScript.py创建 如果 目标:如何检查列表中是否既没有更新也没有创建,然后if语句中的代码将运行?将代码更正为:python中的逻辑运算符:值1或值2不在列表中,python,list,if-statement,logical-operators,Python,List,If Statement,Logical Operators,为什么这不起作用: 如果更新或创建不在sys.argv中: 用法 $python myScript.py更新 如果 $python myScript.py创建 如果 目标:如何检查列表中是否既没有更新也没有创建,然后if语句中的代码将运行?将代码更正为: if "update" not in sys.argv and "create" not in sys.argv: usage() 如果您需要检查可能出现的问题列表中的许多值,请使用下一个解决方
if "update" not in sys.argv and "create" not in sys.argv:
usage()
如果您需要检查可能出现的问题列表中的许多值,请使用下一个解决方案:
或使用-crossion的值列表的另一个解决方案,仅当需要速度或列表较长时才使用下一个解决方案,否则更倾向于使用前一个解决方案,所有解决方案都更易于阅读/理解:
if len(set(["update", "create"]) & set(sys.argv)) == 0:
usage()
注意:每次调用此代码时,setlist_对象代码都从列表中构造集合,并且需要时间,因此,如果此代码多次运行,请在变量a=setlist_a中构造集合,并在以后多次重复使用。请将代码更正为:
if "update" not in sys.argv and "create" not in sys.argv:
usage()
如果您需要检查可能出现的问题列表中的许多值,请使用下一个解决方案:
或使用-crossion的值列表的另一个解决方案,仅当需要速度或列表较长时才使用下一个解决方案,否则更倾向于使用前一个解决方案,所有解决方案都更易于阅读/理解:
if len(set(["update", "create"]) & set(sys.argv)) == 0:
usage()
注意:每次调用此代码时,setlist_对象代码都会从列表构造set,这需要时间,因此,如果此代码多次运行,请在变量a=setlist_a中构造set,并在以后多次重复使用。您的代码相当于
if "update" or ("create" not in sys.argv):
usage()
由于更新是真实的,它将始终评估使用情况
你的意思可能是
if "update" not in sys.argv and "create" not in sys.argv:
usage()
您的代码相当于
if "update" or ("create" not in sys.argv):
usage()
由于更新是真实的,它将始终评估使用情况
你的意思可能是
if "update" not in sys.argv and "create" not in sys.argv:
usage()
请看一看argparse模块,特别是子命令。请看一看argparse模块,特别是子命令。我不理解您使用set的解决方案。为什么要使用它,为什么还要与sys.argv一起使用,因此为什么要检查两者是否都==0?@WorkoutBuddy在常规setlist_obj中创建一组任何简单类型的列表,如字符串或整数。[update,create]是字符串列表,sys.argv也是简单的字符串列表。和数学中的集合一样,它只包含其中每个值的一个实例,最重要的是,如果有任何值在这个集合内或不在这个集合内,它有非常快的固定签入时间。Set intersection&返回仅包含同时位于两个集合内的元素的集合。此外,lenset_obj==0检查集合集合_obj是否为emtpy,是否不包含任何元素。因此,当我检查lenseta&setb==0时,当且仅当a和b中同时没有相同的元素时,这才是真的。设置交集是检查两个或多个列表是否包含相同元素的非常有效的方法。但我最后一个使用all运算符的解决方案是最具python风格和可读性的方法,使用它而不是set。当您需要非常快的速度时,仅对列表中的数百个元素使用集合,我只是提供了可能的解决方案。我不理解您使用集合的解决方案。为什么要使用它,为什么还要与sys.argv一起使用,因此为什么要检查两者是否都==0?@WorkoutBuddy在常规setlist_obj中创建一组任何简单类型的列表,如字符串或整数。[update,create]是字符串列表,sys.argv也是简单的字符串列表。和数学中的集合一样,它只包含其中每个值的一个实例,最重要的是,如果有任何值在这个集合内或不在这个集合内,它有非常快的固定签入时间。Set intersection&返回仅包含同时位于两个集合内的元素的集合。此外,lenset_obj==0检查集合集合_obj是否为emtpy,是否不包含任何元素。因此,当我检查lenseta&setb==0时,当且仅当a和b中同时没有相同的元素时,这才是真的。设置交集是检查两个或多个列表是否包含相同元素的非常有效的方法。但我最后一个使用all运算符的解决方案是最具python风格和可读性的方法,使用它而不是set。当您需要非常快的速度时,仅对列表中的数百个元素中相当大的数据使用集合,我只是提供了可能的解决方案。