【发布时间】:2022-01-19 19:37:53
【问题描述】:
我有两个没有重复的有序列表。我需要以最有效的方式创建第三个,但我被卡住了。 我可以这样做:
list1.extend(list2)
list1.sort(key=lambda x: x.id)
但考虑到两个列表都已排序,我认为这根本不是有效的。您对如何有效地做到这一点有什么建议吗?
例子:
list1 = [[40, 1980], [50, 1970], [70, 1980], [90, 1975]]
list2 = [[60, 1980],[65,1985]]
list3 = [[40, 1980],[50, 1970],[60, 1980],[65, 1985],[70, 1980],[90, 1975]]
PS: 唯一重要的是第一个变量是'id'
【问题讨论】:
-
它实际上非常有效,并且可能是最干净的方法之一。
-
Python 使用Timsort 排序算法,该算法针对已排序和接近排序的输入进行了优化。它将一次性检测并合并两个排序的运行。
-
除此之外,除非您在两个列表中都有很多时间 new 数据,并且必须重复很多次(例如,在处理网络消息时),否则无论如何,与您的整体计划相比,时间和资源可以忽略不计。但是这个算法可能很有趣。