如何在python中找到元组列表中相同的所有元素?

如何在python中找到元组列表中相同的所有元素?,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我有一个元组列表,每个元组包含2个整数。 例如[1,2,2,3,3,4,4,5,100,130,130,140,140,150,150,170] 如何找到相同的元素? 这里,在本实施例中,1和2是相同的;2和3是相同的;所以1和3也是一样的。 上述例子的答案是: 1,2,3,4,5 100,130,140,150,170 我更希望答案是列表列表,但任何有效的解决方案都可以。假设一个元素在元组中的位置无关紧要,例如,如果用2,1代替1,2,也没有什么区别,我认为您需要的是,也称为联合查找。基本

我有一个元组列表,每个元组包含2个整数。 例如[1,2,2,3,3,4,4,5,100,130,130,140,140,150,150,170]

如何找到相同的元素? 这里,在本实施例中,1和2是相同的;2和3是相同的;所以1和3也是一样的。 上述例子的答案是:

1,2,3,4,5

100,130,140,150,170

我更希望答案是列表列表,但任何有效的解决方案都可以。

假设一个元素在元组中的位置无关紧要,例如,如果用2,1代替1,2,也没有什么区别,我认为您需要的是,也称为联合查找。基本上,可以迭代元组

for t1, t2 in list_of_tuples:
对于每个元素,在数据结构中创建一个集合,对应于每个元素(如果它不存在)

    disjoint_set_structure.make_set(t1)
    disjoint_set_structure.make_set(t2)
然后统一两套

    disjoint_set_structure.union(t1, t2)
最后,如果您的实现支持,您将能够从不相交的集合结构中获得不同的组


有很多,您也可以用大约50行代码轻松创建自己的。David Z提供了一个极好的解决方案,可以解决与您类似的更复杂的问题。但我正确理解你的问题,大卫Z的回答对你的问题来说有点过分了。您不需要定义任何新的类或数据结构

我认为你需要做的就是把你所有的数字都放到一个集合中。因为一个集合不能有任何重复的元素,所以这个过程实际上会找到相同的元素。如下代码所示:

list_of_tuples=[(1, 2), (2, 3), (3, 4), (4, 5), (100, 130), (130, 140), (140, 150), (150, 170)]
ans=set()
for t in list_of_tuples:
    for num in t:
        ans.add(num)
print(list(ans))

从这个问题上不太清楚你喜欢这个结果

您确实提到需要列表列表,但没有指定创建此列表的标准

如果你用什么标准更新你的问题,将结果分成多个列表,创建列表列表,我将尝试更新这个答案

下面是一个单行程序,用于生成一个列表

鉴于:

tuples_v = [(1, 2), (2, 3), (3, 4), (4, 5), (100, 130), (130, 140), (140, 150), (150, 170)]
结果:

result = list(set([value_v for tuple_v in tuples_v for value_v in tuple_v]))

当你在这个例子中说1和2是相同的;2和3是相同的;所以1和3也是一样的,这是先验知识,并且以某种方式被存储吗?基本上,这些相同的关系是否被存储/给定?每个元组有两个整数。我正在做一些图像处理工作,我必须将图像划分为多个区域,并为每个区域指定整数值。一个元组中的两个值表示这两个区域相同。所以在上面的例子中有两个区域,一个是数字1,2,3,4,5代表的区域,另一个是100130140150170。我认为OP希望1,2,3,4,5和100130140150170在一个单独的列表中,而不是在一个单独的列表中。