Python 中的优先队列可以使用 queue.PriorityQueue
模块来实现,具体使用方法如下:
创建优先队列
import queue
q = queue.PriorityQueue()
首先导入 queue
模块,然后创建一个优先队列实例 q
。
加入元素
q.put((5, "hello"))
q.put((1, "world"))
q.put((3, "apple"))
put
方法用于向优先队列中添加元素,每个元素都是一个二元组,第一个元素为优先级,第二个元素为实际元素。
上述代码中的优先队列会依次添加三个元素,分别是优先级为 5,元素为 "hello"
,优先级为 1,元素为 "world"
,优先级为 3,元素为 "apple"
。
取出元素
item = q.get()
print(item)
get
方法用于从优先队列中获取元素,返回的是优先级最小的元素(优先级最大的元素为队列的最后一个元素)。
上述代码中会从优先队列中取出优先级最小的元素,即 (1, "world")
,然后打印出来。
示例1
import queue
# 创建优先队列
q = queue.PriorityQueue()
# 加入元素
q.put((5, "hello"))
q.put((1, "world"))
q.put((3, "apple"))
# 取出元素
while not q.empty():
item = q.get()
print(item)
输出结果为:
(1, 'world')
(3, 'apple')
(5, 'hello')
上述程序会依次加入三个元素,然后不断从优先队列中取出元素并打印,打印的结果是按照优先级从小到大排序的。
示例2
import queue
# 创建优先队列
q = queue.PriorityQueue()
# 加入元素
q.put((5, "hello"))
q.put((1, "world"))
q.put((3, "apple"))
# 取出部分元素
item = q.get()
print(item)
item = q.get()
print(item)
输出结果为:
(1, 'world')
(3, 'apple')
上述程序只取了队首的两个元素,然后打印出来。
总之,以上是 Python 优先队列的使用方法,可以根据实际情况进行调整。