如何在python中对元组列表进行分组?

如何在python中对元组列表进行分组?,python,list,tuples,Python,List,Tuples,我有一个元组列表,看起来像这样的输入: [(1,8), (2,9), (3,10), (4,11), (8,16), (10,17)] 我想得到这样的输出: [(1, 8, 16) (2,9), (3, 10, 17), (4,11)] 如果元组元素有任何公共元素,我想将它们合并在一起。这个过程将一直持续到我剩下的元组列表中没有任何共同的元素。 也就是说,我希望以这样一种方式进行合并,即最后的元组列表将不剩下任何公共元素 比如说 1,8,8,16至1,8,16 或者也 1,8,8,16,2,

我有一个元组列表,看起来像这样的输入:

[(1,8), (2,9), (3,10), (4,11), (8,16), (10,17)]
我想得到这样的输出:

[(1, 8, 16) (2,9), (3, 10, 17), (4,11)]
如果元组元素有任何公共元素,我想将它们合并在一起。这个过程将一直持续到我剩下的元组列表中没有任何共同的元素。 也就是说,我希望以这样一种方式进行合并,即最后的元组列表将不剩下任何公共元素

比如说 1,8,8,16至1,8,16

或者也

1,8,8,16,2,3,3,4到1,8,16,2,3,4

您将如何以一种高效的pythonic方式实现这一点?

使用networkx:


@阿努姆:如果有帮助的话,你能接受它作为答案来结束这个问题吗?
import networkx as nx

tuple_list = [(1,8), (2,9), (3,10), (4,11), (8,16), (10,17)]
graph = nx.Graph(tuple_list)
result = list(map(tuple,nx.connected_components(graph)))
print(result)
[(8, 1, 16), (9, 2), (17, 10, 3), (11, 4)]