Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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 3_Python_Algorithm_List_Array Merge - Fatal编程技术网

基于内容重叠合并子列表,python 3

基于内容重叠合并子列表,python 3,python,algorithm,list,array-merge,Python,Algorithm,List,Array Merge,如果我们有许多列表,其中包含子列表(对)和整数。如果任意两个子列表具有相同的编号,我们希望合并它们并删除重复的数字 例如: alist=[[2,1]、[5,3]、[5,1]、[3,4]、[3,1]、[5,4]、[4,1]、[5,2]、[4,2]] 变为alist=[1,2,3,4,5] 结果就是所有的数字都合并到一个列表中,因为它们恰好都是共享的数字 但并非所有列表都如此方便: alist=[[4,5]、[7,8]、[6,7]、[9,5]] 将变成:alist=[[4,5,9],[6,7,8]]

如果我们有许多列表,其中包含子列表(对)和整数。如果任意两个子列表具有相同的编号,我们希望合并它们并删除重复的数字

例如:
alist=[[2,1]、[5,3]、[5,1]、[3,4]、[3,1]、[5,4]、[4,1]、[5,2]、[4,2]]
变为alist=[1,2,3,4,5]
结果就是所有的数字都合并到一个列表中,因为它们恰好都是共享的数字

但并非所有列表都如此方便:
alist=[[4,5]、[7,8]、[6,7]、[9,5]]
将变成:
alist=[[4,5,9],[6,7,8]]
问题是我正在迭代巨大的列表,其中有10^7个条目。
是否有一种方法可以在没有两个嵌套循环的情况下完成此操作?这就是我目前正在做的。

首先,您可以通过创建一个哈希表来识别哪些对共享一个成员,该哈希表以数字为索引,其条目是对的集合


现在,您可以将问题视为在一个图中查找连接的组件(),其中节点是成对的,如果它们共享一个数字,则两个对是连接的。正如Wikipedia条目所指出的,您可以通过使用深度优先搜索来访问图中的所有节点,使用深度优先搜索来跟踪从一个节点到同一组件中所有其他节点的所有直接和间接链接。另一种方法是维护成对的集合,当以前不同集合中的两对共享一个数字时合并集合。

如果每个元素都是一对,并且包含在不同的列表中,会发生什么?例如:
[[1,2],[3,4],[1,3]]
,这会导致
[[1,2,3],[3,4]
[[1,2,2],[1,3,4]]
吗?值的范围是多少?每对中的数字可以高达对的总数,所以目前的数字是多少。当我收到它们时,所有对都存储在一个总体列表中。但是如果有充分的理由,我可以用不同的方式处理输入。例如,我知道DEQUE更快,但可以对其执行的操作更有限。感谢您的评论!我以前缺乏足够的语言来描述我的问题。我真的不知道这是图论。这不是我以前探索过的领域,但现在我知道从哪里开始,我可以做一些阅读来找出我的问题。当我找到解决方案后,我会发回这里。干杯