【发布时间】:2017-04-15 01:21:15
【问题描述】:
如果我们有许多包含子列表(对)的列表,其中包含整数。如果任何两个子列表有相同的数字,我们希望将它们合并并删除重复的数字。
例如:
alist = [[2, 1], [5, 3], [5, 1], [3, 4], [3, 1], [5, 4], [4, 1], [5, 2], [4, 2]]
becomes alist = [1,2,3,4,5]
结果将是它们全部合并到一个列表中,因为它们恰好是所有共享数字。
但并非所有列表都那么方便:
alist = [[4,5],[7,8],[6,7],[9,5]]
将变为:alist = [[4,5,9],[6,7,8]]
问题是我正在遍历巨大的列表,其中包含 10^7 个条目。
有没有办法在没有两个嵌套循环的情况下完成这个?这就是我目前正在做的事情。
【问题讨论】:
-
当每个元素是一对包含在不同的列表中时会发生什么? IE:
[[1,2], [3,4], [1,3]],这会导致[[1,2,3], [3,4]]或[[1,2], [1,3,4]]或[[1,2,3], [1,3,4]]? -
取值范围是多少?
-
每对中的位数可以与对的总数一样高,因此位数
-
目前。当我收到它们时,所有的对都存储在一个完整的列表中。但如果有充分的理由,我也可以以不同的方式处理输入。例如,我知道双端队列更快,但可以对它们执行的操作更加有限。
标签: python algorithm list array-merge