我正在使用Python 3.x。
如果我想查看三个列表中是否有8个数字,我将如何在Python中执行此操作。
如果我有:
list1 = [5, 6, 7, 2, 3, 5]
list2 = [2, 5, 8, 9, 1, 5]
list3 = [4, 6, 7 ,9, 2, 3]
如何在python中正确编写?:
if 5 and 6 and 3 in (lists 1, 2, and 3)
括号中的部分显然不正确。我如何在Python中为此编写正确的语法?
答案 0 :(得分:2)
这很简单,很明显。如果要检查任何列表中是否有任何数字,请执行以下操作:
def any_number_in_any_lists(numbers, lists):
for alist in lists:
for number in numbers:
if number in alist:
return True
return False
如果您想检查所有号码是否在所有列表中,请执行以下操作:
def all_number_in_all_lists(numbers, lists):
for alist in lists:
for number in numbers:
if number not in alist:
return False
return True
如果要在任何列表中检查所有号码,它会变得更复杂。最容易和更清楚的是有两种方法:
def all_numbers_in_list(l, numbers):
for n in numbers:
if n is not in l:
return False
return True
def all_numbers_in_any_list(lists, numbers):
for l in lists:
if all_numbers_in_list(l, numbers):
return True
return False
你可以使用上面的函数:
if all_number_in_all_lists([3,5,6], [list1, list2, list3]):
do something
else:
do something else
由于您需要的代码较少,因此您可以使用各种“快捷方式”。快捷方式可以缩短代码,但也会使代码不那么清晰和难以阅读,因此它们不是更好的选择。例如,您可以使用any函数和生成器表达式:
def any_number_in_any_lists(numbers, lists):
for alist in lists:
if any(number in alist for number in numbers):
return True
return False
你甚至可以嵌套其中两个:
def any_number_in_any_lists(numbers, lists):
return any(any(number in alist for number in numbers) for alist in lists)
但要理解代码需要很长时间才能获得更多脑力。它也会明显变慢,因为它会遍历所有列表,即使它在第一个列表中找到匹配。我想不出任何目前不慢的方式,但可能有一个。但是你不太可能发现任何明显更快且不会更混乱的东西。
对于检查所有数字是否在所有列表中的情况,您可以这样做:
def all_number_in_all_lists(numbers, lists):
return all(all(number in alist for number in numbers) for alist in lists)
由于某种原因,与上述功能相比,它也需要两倍的时间,即使没有快捷方式。它可能与创建中介列表有关。
Python通常就是这种情况:简单就是最好的。
您所使用的代码的逐行说明,因为您要求它:
def all_numbers_in_list(l, numbers):
使用参数“l”和“numbers”定义一个名为“all_numbers_in_list”的函数。
for n in numbers:
对于数字中的每个项目,为该数字指定变量“n”,然后执行以下块。
if n is not in l:
如果变量“n”的值不在列表“l”中。
return False
以False作为返回值退出函数。
return True
退出该函数,返回值为True。
def all_numbers_in_any_list(lists, numbers):
定义一个名为“all_numbers_in_any_list”的函数,其参数为“lists”和“numbers”。
for l in lists:
对于列表中的每个项目,将变量“l”分配给该数字,然后执行以下块。
if all_numbers_in_list(l, numbers):
如果使用参数“l”和“numbers”调用函数“all_numbers_in_list”,则返回True,执行以下操作:
return True
退出该函数,返回值为True。
return False
以False作为返回值退出函数。
这有帮助吗?