2022年 11月 4日

python中的优先队列PriorityQueue

普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出的行为特征。通常采用堆数据结构来实现。我们可以利用优先队列中元素被赋予优先级的这个特点来保存到当前状态下的若干个最大的元素值,这样优先级越高那么元素就可以先被处理,PriorityQueue属于queue模块中的一个类,其中经常使用到的有三个方法:声明一个优先队列、往优先队列中加入元素、往优先队列中移除元素

① 声明一个优先队列:queue.PriorityQueue()

② 往队列中加入元素:queue.put(self, item, block=True, timeout=None)

③ 往队列中删除元素:queue.get(self, block=True, timeout=None)

在往队列中加入元素的时候第一个元素值表示的是元素的优先级,并且值越小那么优先级越高,所以队首元素的优先级是最高的,而且经常加入队列的元素类型为元组这样就可以在队列中保存多个值,下面是具体的例子:

  1. import queue
  2. if __name__ == '__main__':
  3. queue = queue.PriorityQueue()
  4. queue.put((100, 100))
  5. queue.put((-12, -7))
  6. queue.put((7, 8))
  7. while not queue.empty():
  8. print(queue.get())

输出结果: