所以我正在寻找一种简便的方法:
if a == 5 or a == 6 or a == 7:
有这样的事情:
if a == (5 or 6 or 7):
现在,我知道我可以这样做:
if a in [5,6,7]:
但是我正在寻找一些更通用的东西,当元素不能轻易放入列表时(例如,如果它们是长变量名或者每个元素本身就是一个列表)
我也知道any()
函数,但这并没有清理它(我仍然必须为每个条件设置==
。
可以这样做吗?语法正确吗?
编辑:我知道这可以通过一堆方法简单地完成,但我要特别询问如何将比较链接在一起,如第二个片段所示
答案 0 :(得分:2)
通常推荐的语法是x in <list>
,正如您所描述的那样。
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]:
在我的观点中,最明确地使用in
涉及预先计算右侧列表:
if my_answer in list_of_correct_answers:
如果您能够在其他地方构建列表,那么对于您提到的每个案例,这都是完全可读的。
答案 1 :(得分:1)
通常,您始终可以使用in
运算符。如果要在嵌套列表中查找内容,可以始终使用itertools.chain.from_iterable
。老实说,现在我无法想到一个我们无法使用列表的情况。
例如:
>>> 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
对于你的问题的答案,在第二个片段做一些事情?否。
答案 2 :(得分:0)
pythonic方式是
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