Pythoncookbook(数据结构与算法)实现优先级队列的方法示例-创新互联

本文实例讲述了Python实现优先级队列的方法。分享给大家供大家参考,具体如下:

创新互联建站为客户提供专业的网站设计制作、做网站、程序、域名、空间一条龙服务,提供基于WEB的系统开发. 服务项目涵盖了网页设计、网站程序开发、WEB系统开发、微信二次开发、成都手机网站制作等网站方面业务。

问题:要实现一个队列,它能够以给定的优先级对元素排序,且每次pop操作时都会返回优先级最高的那个元素;

解决方案:采用heapq模块实现一个简单的优先级队列

# example.py
#
# Example of a priority queue
import heapq
class PriorityQueue:
  def __init__(self):
    self._queue = []
    self._index = 0
  def push(self, item, priority):
    heapq.heappush(self._queue, (-priority, self._index, item))
    self._index += 1
  def pop(self):
    return heapq.heappop(self._queue)[-1]
# Example use
class Item:
  def __init__(self, name):
    self.name = name
  def __repr__(self):
    return 'Item({!r})'.format(self.name)
q = PriorityQueue()
q.push(Item('foo'), 1)
q.push(Item('bar'), 5)
q.push(Item('spam'), 4)
q.push(Item('grok'), 1)
print("Should be bar:", q.pop())
print("Should be spam:", q.pop())
print("Should be foo:", q.pop())
print("Should be grok:", q.pop())


分享题目:Pythoncookbook(数据结构与算法)实现优先级队列的方法示例-创新互联
本文路径:http://bzwzjz.com/article/ijpsj.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 定制网站建设多少钱 成都网站建设 四川成都网站建设 成都模版网站建设 成都品牌网站建设 成都网站建设 成都响应式网站建设 温江网站设计 重庆网站建设 定制级高端网站建设 成都网站设计 成都网站制作 四川成都网站设计 重庆电商网站建设 成都网站建设 网站设计公司 网站建设公司 成都网站设计 梓潼网站设计 手机网站建设 古蔺网站建设 成都网站设计公司