比较/查找另一个列表的嵌套列表中的列表

时间:2018-10-06 17:05:31

标签: python python-3.x list nested-lists

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

下面的示例返回"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语句非常笨拙,几乎没有用。

如何以更通用的方式进行这项工作?

3 个答案:

答案 0 :(得分:3)

您可以将all()与生成器一起使用,如果一切都是真实的,则生成器将返回TrueFalse

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

# => prints Yes

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

答案 1 :(得分:1)

尝试一下:

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

答案 2 :(得分:1)

您可以设置一个功能来处理所有这些功能,所有提到的方法都将起作用,仅显示其他选项,您可以使用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