首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并列表

合并列表
EN

Stack Overflow用户
提问于 2013-01-19 15:00:50
回答 1查看 118关注 0票数 0

可能重复: I want to group tuples based on similar attributes

我对Python和一般的编码非常陌生,有一个集群对的列表,如下所示

代码语言:javascript
复制
[[1,2],[3,4],[2,3],[4,5]......],

我编写了这段代码来将集群对加入到更大的集群列表中。

代码语言:javascript
复制
for i in range (len(Clist)):
    for j in range(i+1,len(Clist)):
        for disk in Clist[i]:
            if disk in Clist[j]:
                joined=joincluster(Clist[i], Clist[j])
                Clist[i]=list(set(joined))
                Clist[j]=[]
                break

我继续把空的拿出来。然而,当我有超过30个以上的集群对时,它并没有将所有的集群连接起来,一些本应加入的集群还没有加入。我看不出我哪里出了问题?有谁能识别出问题吗?

代码语言:javascript
复制
[[0, 2], [0, 9], [1, 10], [2, 0], [2, 9], [3, 6], [3, 10], [3, 11], [4, 5], [4, 7], [4, 12], [4, 14], [5, 4], [5, 8], [5, 12], [5, 14], [6, 3], [6, 10], [6, 11], [7, 4], [7, 12], [8, 5], [8, 14], [9, 0], [9, 2], [9, 13], [10, 1], [10, 3], [10, 6], [10, 11], [11, 3], [11, 6], [11, 10], [12, 4], [12, 5], [12, 7], [13, 9], [14, 4], [14, 5], [14, 8]]

对不起,只有当我有相当多的一对时才会出现问题。这就是我得到的

代码语言:javascript
复制
[[0, 9, 2, 13], [11, 1, 10, 3, 6], [3, 6], [4, 5, 7, 8, 12, 14]]

所以那里的3,6应该被合并了,但它没有。

EN

回答 1

Stack Overflow用户

发布于 2013-01-19 16:02:23

让我们举一个简单的例子,其中只有4个集群,如下所示:

代码语言:javascript
复制
clusters = [ [1, 10], [1, 20], [3, 6], [3, 10] ]

这4足以说明为什么[3, 6]与所有其他集群分离。从第一开始到最后,您循环遍历这些集群。下面是发生的事情:

  1. 是否已经有一个包含110的集群?-不,创建一个包含两者的新集群。现在我们有了以下内容:[[1, 10]]
  2. 是否已经有一个包含120的集群?-是的,附加到匹配中。现在我们有了以下内容:[[1, 10, 20]]
  3. 是否已经有一个包含36的集群?-不,创建一个包含两者的新集群。现在我们有了以下内容:[[1, 10, 20], [3, 6]]
  4. 是否已经有一个包含310的集群?-是的,附加到匹配中。现在我们有了以下内容:[[1, 3, 10, 20], [3, 6]]

问题是:在将[3, 10]附加到[1, 10]之后,它不会检查是否已经有包含3的现有集群,这些集群中没有10。您需要将其添加到代码中,这样就可以正常工作了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14415606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档