我想从两个给定的嵌套列表中创建一个新的嵌套列表(每个列表中都有唯一的项目),以便新的嵌套列表是两个列表的最大公共交集。
一个例子希望有助于澄清我的问题:
old1 = [[1,2],[3,4,5],[6,7,8],[9]]
old2 = [[1,2,3],[4,5,7],[6,8,10]]]
new = [[1,2],[3],[4,5],[6,8],[7],[9],[10]]
顺序并不重要,因此使用集合可能很有用。
有人有想法吗?任何帮助将不胜感激!
__
好的,很明显,最容易获得最大公共交点的是
new1 = filter(None,[list(set(o1) & set(o2)) for o1 in old1 for o2 in old2])
print new1
[[1, 2], [3], [4, 5], [7], [8, 6]]
如果您想包含仅出现在旧列表之一中的整数,您可以在之后添加它们:
a,b = set(sum(old1, [])), set(sum(old2, []))
c = (a | b) - (a & b)
for d in c:
new1.append([d])
谢谢大家的帮助!