如果出现任何交叉点(以有效的方式),我如何才能获得2D列表项的并集?

Wor*_*rld 0 python intersection list set

我在python中有2D列表

list = [[9, 2, 7], [9, 7], [2, 7], [1, 0], [0, 5, 4]]
Run Code Online (Sandbox Code Playgroud)

如果出现任何交叉点,我想获得列表项的联合.例如[9, 2, 7],[9, 7],[2, 7]具有多于一个位的交叉点.这种联盟将是[9,2,7].

如何以有效的方式获得如下最终列表?

finalList = [[9,2,7], [0, 1, 5, 4]]
Run Code Online (Sandbox Code Playgroud)

NB数字顺序并不重要.

hiv*_*ert 5

这是一个理论上的答案:这是一个连接组件问题:您构建如下图形:

  • 列表中每个集都有一个顶点
  • 当它们具有共同值时,在两个集合之间存在边缘.

你想要的是图的连通组件的联合.