📅  最后修改于: 2023-12-03 14:46:45.657000             🧑  作者: Mango
优先队列是一种特殊的队列,其中的每个元素都有一个优先级。具有较高优先级的元素先被处理,而具有较低优先级的元素则被延迟处理。
Python 的 heapq 模块提供了用于实现优先队列的函数和类。
可以使用 Python 的列表来表示优先队列。
向列表中添加元素时,将元素添加到列表的末尾,然后使用 heapq 模块的 heappush() 函数将其排序。使用 heappop() 函数删除具有最高优先级的元素。
import heapq
queue = []
heapq.heappush(queue, 4)
heapq.heappush(queue, 1)
heapq.heappush(queue, 7)
heapq.heappush(queue, 3)
print(queue) # [1, 3, 7, 4]
while queue:
print(heapq.heappop(queue)) # 1, 3, 4, 7
Python 的 queue 模块中提供了 PriorityQueue 类,支持插入元素和移除优先级最高的元素。该类内部是通过堆来实现优先队列的。
import queue
q = queue.PriorityQueue()
q.put((4, 'apple'))
q.put((1, 'banana'))
q.put((7, 'orange'))
q.put((3, 'pear'))
while not q.empty():
print(q.get()) # (1, 'banana'), (3, 'pear'), (4, 'apple'), (7, 'orange')