Python将多个列表与交叉点合并[重复]

发布于 2021-01-29 16:40:53

这个问题已经在这里有了答案

8年前关闭。

可能的重复:
Python:基于交集的简单列表合并

我有多个清单:

 list=[[1,2,3],[3,5,6],[8,9,10],[11,12,13]]

有没有一种聪明而又快速的方法来获取至少有一个交集的所有子列表。在我的示例中,我希望代码返回

 result=[[1,2,3,5,6],[8,9,10],[11,12,13]]
关注者
0
被浏览
159
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这可行,但可能不是很优雅:

    def merge_lists(l):
            s=map(set, l)
            i, n=0, len(s)
            while i < n-1:
                    for j in xrange(i+1, n):
                            if s[i].intersection(s[j]):
                                    s[i].update(s[j])
                                    del s[j]
                                    n-=1
                                    break
                    else:
                            i+=1
            return [sorted(i) for i in s]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看