合并列表与交集

Jam*_*oid 7 python algorithm set

鉴于:

g=[[], [], [0, 2], [1, 5], [0, 2, 3, 7], [4, 6], [1, 4, 5, 6], [], [], [3, 7]]
Run Code Online (Sandbox Code Playgroud)

如何比较g中的每个列表,以便对于共享的列表,任何公共号码都可以合并到一个集合中?

例如
0存在于g[2],g[4] 因此它们合并为一组{0,2,3,7}

我尝试了以下但它不起作用:

for i in g:
    for j in g:
        if k in i == l in j:
            m=set(i+j)
Run Code Online (Sandbox Code Playgroud)

我想做出最大可能的设定.

Mar*_*som 1

这是一个快速说明,它将给出所有相交集合的列表:

sets = [set(i+j) for i in g for j in g if i!=j and (set(i) & set(j))]
Run Code Online (Sandbox Code Playgroud)

请注意,每个结果都会重复,因为每个列表都会被比较两次,一次在左侧,一次在右侧。

  • 在这种情况下,您可能需要执行以下操作:“set(frozenset(i+j) for i in g for j in g if i!=j and (set(i) & set(j)))”。它将消除重复项(假设这是OP想要的)。 (2认同)