Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 合并列表列表_Python_List_Loops - Fatal编程技术网

Python 合并列表列表

Python 合并列表列表,python,list,loops,Python,List,Loops,可能重复: 我对Python和一般的编码非常陌生,有一个这样的集群对列表 [[1,2],[3,4],[2,3],[4,5]......], 我编写了这段代码,将集群对连接到一个更大的集群列表中 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=

可能重复:

我对Python和一般的编码非常陌生,有一个这样的集群对列表

[[1,2],[3,4],[2,3],[4,5]......],
我编写了这段代码,将集群对连接到一个更大的集群列表中

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个左右的簇对时,它并没有将所有的簇对连接起来,一些本应该连接的簇还没有连接起来。我看不出我错在哪里?有人能告诉我这个问题吗

[[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]]
对不起,只有当我有相当多的对时,问题才会发生。 这就是我得到的

[[0, 9, 2, 13], [11, 1, 10, 3, 6], [3, 6], [4, 5, 7, 8, 12, 14]]

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

让我们举一个简单的例子,只有4个这样的集群:

clusters = [ [1, 10], [1, 20], [3, 6], [3, 10] ]
这4个足以说明为什么
[3,6]
与所有其他集群分离。从第一个到最后一个循环遍历这些集群。下面是发生的情况:

  • 是否已经有一个集群包含
    1
    10
    否,创建一个新的,包括两个。我们现在有以下内容:
    [[1,10]]
  • 是否已经有一个集群包含
    1
    20
    是的,添加到匹配中。我们现在有以下内容:
    [[1,10,20]]
  • 是否已经有一个集群包含
    3
    6
    否,创建一个新的,包括两个。我们现在有以下内容:
    [[1,10,20],[3,6]]
  • 是否已经有一个集群包含
    3
    10
    是的,添加到匹配中。我们现在有以下内容:
    [[1,3,10,20],[3,6]]

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

    您可以添加一个输入和输出示例吗?我已经编辑了上面的内容。您希望如何合并它们?我们需要了解输入和输出背后的一些逻辑,您希望与哪些集群合并?我只想合并包含相同数字的列表,例如[1,2]与[2,8]合并以生成[1,2,8]。我不知道你说的“在哪里”是什么意思,但是合并后的列表应该与集群所在的原始列表相同,如果更简单的话,应该在一个全新的列表中。这是作业问题吗?