Python中连接多个布尔检查的正确语法是什么?
因此,我正在寻找一种速记方法:Python中连接多个布尔检查的正确语法是什么?,python,python-2.7,Python,Python 2.7,因此,我正在寻找一种速记方法: if a == 5 or a == 6 or a == 7: 让它像这样: if a == (5 or 6 or 7): 现在,我知道我可以做到: if a in [5,6,7]: 但是我正在寻找一种更通用的方法,当元素不能很容易地放入列表时(例如,如果它们是长变量名,或者每个元素本身就是一个列表) 我也知道any()函数,但这并不能很好地清理它(对于每个条件,我仍然需要一个=) 可以这样做吗?正确的语法是什么 EDIT:我知道这可以通过一系列方法来实现
if a == 5 or a == 6 or a == 7:
让它像这样:
if a == (5 or 6 or 7):
现在,我知道我可以做到:
if a in [5,6,7]:
但是我正在寻找一种更通用的方法,当元素不能很容易地放入列表时(例如,如果它们是长变量名,或者每个元素本身就是一个列表)
我也知道any()
函数,但这并不能很好地清理它(对于每个条件,我仍然需要一个=
)
可以这样做吗?正确的语法是什么
EDIT:我知道这可以通过一系列方法来实现,但我要特别询问的是如何将比较链接在一起,如第二个snipit所示常用的语法是
x in
,如您所述
if a in [5,6,7]:
您声称不合适的案例同样适用:
# Long names
if a in [the_first_of_november,
the_second_sunday_in_the_third_lunar_month,
tuesday]:
# Lists:
if myList in [yourList, hisList, herList]:
在我看来,在中最清楚地使用涉及到预先计算右侧列表:
if my_answer in list_of_correct_answers:
如果您能够在其他地方构建列表,那么对于您提到的每种情况,都可以完全阅读。如您所述,常用的语法是x in
if a in [5,6,7]:
您声称不合适的案例同样适用:
# Long names
if a in [the_first_of_november,
the_second_sunday_in_the_third_lunar_month,
tuesday]:
# Lists:
if myList in [yourList, hisList, herList]:
在我看来,在
中最清楚地使用涉及到预先计算右侧列表:
if my_answer in list_of_correct_answers:
如果您能够在其他地方构建列表,那么对于您提到的每种情况,都可以完全阅读。如您所述,常用的语法是x in
if a in [5,6,7]:
您声称不合适的案例同样适用:
# Long names
if a in [the_first_of_november,
the_second_sunday_in_the_third_lunar_month,
tuesday]:
# Lists:
if myList in [yourList, hisList, herList]:
在我看来,在
中最清楚地使用涉及到预先计算右侧列表:
if my_answer in list_of_correct_answers:
如果您能够在其他地方构建列表,那么对于您提到的每种情况,都可以完全阅读。如您所述,常用的语法是x in
if a in [5,6,7]:
您声称不合适的案例同样适用:
# Long names
if a in [the_first_of_november,
the_second_sunday_in_the_third_lunar_month,
tuesday]:
# Lists:
if myList in [yourList, hisList, herList]:
在我看来,在
中最清楚地使用涉及到预先计算右侧列表:
if my_answer in list_of_correct_answers:
如果您能够在其他地方构建列表,那么对于您提到的每一个案例来说,这都是完全可读的。python方法是
if a in (5, 6, 7):
if a in [5, 6, 7]:
第一个也是正确的:
if a == 5 or a == 6 or a == 7:
第二种说法与您认为的不同:
bool(6 == (5 or 6 or 7))
Out[1]: False
蟒蛇的方式是
if a in (5, 6, 7):
if a in [5, 6, 7]:
第一个也是正确的:
if a == 5 or a == 6 or a == 7:
第二种说法与您认为的不同:
bool(6 == (5 or 6 or 7))
Out[1]: False
蟒蛇的方式是
if a in (5, 6, 7):
if a in [5, 6, 7]:
第一个也是正确的:
if a == 5 or a == 6 or a == 7:
第二种说法与您认为的不同:
bool(6 == (5 or 6 or 7))
Out[1]: False
蟒蛇的方式是
if a in (5, 6, 7):
if a in [5, 6, 7]:
第一个也是正确的:
if a == 5 or a == 6 or a == 7:
第二种说法与您认为的不同:
bool(6 == (5 or 6 or 7))
Out[1]: False
通常,您可以始终使用in
运算符进行此操作。如果要在嵌套列表中查找内容,可以始终使用。老实说,现在我想不出我们不能使用列表的情况
例如:
>>> my_list = [[1,2,3],[4,5,6], 6, 7, 2, 3, 'abc']
>>> n = 5
>>> n in itertools.chain.from_iterable(my_list)
True
>>>
>>> s = 'a' #You can even find if a char exists in the list
>>> s in itertools.chain.from_iterable(my_list)
True
你的问题的答案是,像第二段那样做?否。通常,您可以始终使用
中的运算符进行此操作。如果要在嵌套列表中查找内容,可以始终使用。老实说,现在我想不出我们不能使用列表的情况
例如:
>>> my_list = [[1,2,3],[4,5,6], 6, 7, 2, 3, 'abc']
>>> n = 5
>>> n in itertools.chain.from_iterable(my_list)
True
>>>
>>> s = 'a' #You can even find if a char exists in the list
>>> s in itertools.chain.from_iterable(my_list)
True
你的问题的答案是,像第二段那样做?否。通常,您可以始终使用
中的运算符进行此操作。如果要在嵌套列表中查找内容,可以始终使用。老实说,现在我想不出我们不能使用列表的情况
例如:
>>> my_list = [[1,2,3],[4,5,6], 6, 7, 2, 3, 'abc']
>>> n = 5
>>> n in itertools.chain.from_iterable(my_list)
True
>>>
>>> s = 'a' #You can even find if a char exists in the list
>>> s in itertools.chain.from_iterable(my_list)
True
你的问题的答案是,像第二段那样做?否。通常,您可以始终使用
中的运算符进行此操作。如果要在嵌套列表中查找内容,可以始终使用。老实说,现在我想不出我们不能使用列表的情况
例如:
>>> my_list = [[1,2,3],[4,5,6], 6, 7, 2, 3, 'abc']
>>> n = 5
>>> n in itertools.chain.from_iterable(my_list)
True
>>>
>>> s = 'a' #You can even find if a char exists in the list
>>> s in itertools.chain.from_iterable(my_list)
True
你的问题的答案是,像第二段那样做?否。您能否详细说明哪些事情“不容易放入列表”,以及为什么您认为这很困难?
中的适用于大多数情况。您始终可以通过编程方式构造集合来检查成员身份,而不是对一组值进行硬编码。如果您想轻松地检查多个序列,还可以使用itertools.chain
之类的工具。除此之外,更专业的用例需要更专业的解决方案。作为@Robᵩ 比如说,你能给出一些你需要解决的问题的例子吗?另外,如果你对集合进行硬编码以检查其成员身份,只要所有成员都是可散列的,那么使用集合而不是列表是一个好习惯。对于像这样的琐碎情况,这无关紧要,但对于较大的集合,集合的O(1)查找与列表的O(n)查找相比会有所不同。@Robᵩ 因此,无法轻松将事情放入列表的情况是没有意义的,因为我在询问其他事情。正如我所说,我知道if in
工作得非常好,但我正在寻找一种方法,将等式条件链接在一起,如果它存在的话。我会试着修改这个问题,使之更清楚@SilasRay您能详细说明一下什么是itertools.chain
吗?长变量名不是语言问题,而是编辑器问题。您能详细说明哪些内容“不容易放入列表”,以及为什么您认为这很难吗?
中的适用于大多数情况。您始终可以通过编程方式构造集合来检查成员身份,而不是对一组值进行硬编码。如果您想轻松地检查多个序列,还可以使用itertools.chain
之类的工具。除此之外,更专业的用例需要更专业的解决方案。作为@Robᵩ