使用 heapq 在 Python 中合并两个排序数组?
pythonprogrammingserver side programming
在本节中,我们将了解如何使用 Python 中的 heapq 模块合并两个排序列表。例如,如果 list1 = [10, 20, 30, 40] 和 list2 = [100, 200, 300, 400, 500],则合并后将返回 list3 = [10, 20, 30, 40, 100, 200, 300, 400, 500]
要执行此任务,我们将使用 heapq 模块。此模块作为 Python 的标准库模块附带。因此我们需要在使用它之前导入它。
import heapq
heapq 模块有一些属性。这些类似于下面的 −
方法 heapq.heapify(iterable)
它用于将可迭代数据集转换为堆数据结构。
方法 heapq.heappush(heap, element)
此方法用于将元素插入到堆中。之后重新堆整堆结构。
方法 heapq.heappop(heap)
此方法用于从堆顶部返回并删除元素,并对其余元素执行堆化。
方法 heapq.heappushpop(heap, element)
此方法用于在一个语句中插入和弹出元素。
方法 heapq.heapreplace(heap, element)
此方法用于在一个语句中插入和弹出元素。它从堆的根中删除元素,然后将元素插入堆中。
方法 heapq.nlargest(n, iterable, key=None)
此方法用于从堆中返回 n 个最大元素。
方法 heapq.nsmallest(n, iterable, key=None)
此方法用于从堆中返回 n 个最小元素。
示例代码
import heapq first_list = [45, 12, 63, 95, 74, 21, 20, 15, 36] second_list = [42, 13, 69, 54, 15] first_list = sorted(first_list) second_list = sorted(second_list) print('第一个排序列表:' + str(first_list)) print('第二个排序列表:' + str(second_list)) final_list = list(heapq.merge(first_list, second_list)) print('最终列表:' + str(final_list))
输出
第一个排序列表:[12, 15, 20, 21, 36, 45, 63, 74, 95] 第二个排序列表:[13, 15, 42, 54, 69] 最终列表:[12, 13, 15, 15, 20, 21, 36, 42, 45, 54, 63, 69, 74, 95]