我有两个列表列表:
list1 = [[1, 2, 4], [5, 7], [9, 12]]
list2 = [[2, 1 ,4], [5, 6, 11], [9, 14, 18, 12]]
如何检查list1的所有子集是否都在list2的相应子集中(即[1, 2, 4]
位于[2, 1, 4]
,[5, 7]
位于[5, 6, 11]
,{{1在[9, 12]
)?子集内的顺序无关紧要,但子集的顺序很重要。
子集子集,上面示例中的输出将为True,False,True(虽然我需要一个只返回一个True或False的代码,在这种情况下为False)。
谢谢!
答案 0 :(得分:1)
您可以尝试使用all()
并使用issubset
中的set
方法:
print all(set(e[0]).issubset(e[1]) for e in zip(list1, list2))
请注意[e for e in zip(list1, list2)]
是
[([1, 2, 4], [2, 1, 4]),
([5, 7], [5, 6, 11]),
([9, 12], [9, 14, 18, 12])]
答案 1 :(得分:0)
all(set(a).issubset(b) for a, b in zip(list1, list2))
set(a).issubset(b)
从a
中构建set
并检查该集合的所有元素是否都在b
中找到。生成器表达式set(a).issubset(b) for a, b in zip(list1, list2)
构建一个迭代器,将其应用于list1
和list2
的所有对应元素对,然后all
检查所有比较是否都计算为{{1} }。