python中的子集列表比较

时间:2014-07-17 05:19:29

标签: python list

我有两个列表列表:

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)。

谢谢!

2 个答案:

答案 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)构建一个迭代器,将其应用于list1list2的所有对应元素对,然后all检查所有比较是否都计算为{{1} }。