Compare/find 另一个列表的嵌套列表中的列表

Compare/find a list in another list's nested lists

我有几个名为 find 的列表。我想知道这些 find 是否是 full_list 的一部分。列表 find 1-4full_list 的一部分,而列表 find 5-7 不是。

下面的例子returns "Yes".

find1 = [[1, 1]]
find2 = [[1, 1], [2, 2]]
find3 = [[1, 1], [3, 3]]
find4 = [[4, 4], [2, 2], [3, 3]]

find5 = [[1, 0]]
find6 = [[1, 1], [2, 0]]
find7 = [[1, 1], [3, 0]]

full_list = [[1, 1], [2, 2], [3, 3], [4, 4]]

if find2[0] in full_list and find2[1] in full_list:
    print("Yes")
else:
    print("No")

因为len(find2) != len(find4),目前的if语句非常笨拙,几乎没有用。

如何使这项工作更通用?

您可以将 all() 与生成器一起使用,其中 returns 一个 True 如果一切都是真实的或 False:

if all(x in full_list for x in find2):
    print("Yes")
else:
    print("No")

# => prints Yes

这个是通用的,只需要将 find2 更改为您需要用 full_list 检查的任何列表。

试试这个:

set1 = set(find1)
full_set = set(full_list)
if set1.issubset(full_set):
    print("Yes")
else:
    print("No")

你可以设置一个函数来处理所有这些,所有提到的方法都可以,只是显示其他选项,你可以使用filter并比较lens 还有

def is_in_full(k):
    l = list(filter(lambda x: x in k, full_list))
    if len(l) == len(k):
        return 'Yes'
    else:
        return 'No'

print(is_in_full(find1))
# Yes