详解Python 优先队列

  • Post category:Python

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 优先队列的使用方法,可以根据实际情况进行调整。