为了账号安全,请及时绑定邮箱和手机立即绑定

(Python基础教程之十九)Python优先级队列示例

标签:
Python

1.什么是优先队列

  • 优先级队列是一种抽象数据类型,类似于常规队列或堆栈数据结构,但每个元素还具有与之关联的“优先级”。
  • 在优先级队列中,优先级高的元素先于优先级低的元素提供。
  • 如果两个元素具有相同的优先级,则将根据其在队列中的顺序为其提供服务。

2. Python中的优先级队列实现

以下python程序使用该heapq模块实现简单的优先级队列:

PriorityQueue.py

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]

3. Python优先级队列示例

让我们看一个如何使用上面创建的优先级队列的例子。

example.py

class Item:
	def __init__(self, name):
		self.name = name

	def __repr__(self):
		return 'Item({!r})'.format(self.name)

>>> q = PriorityQueue()

>>> q.push(Item('how'), 1)

>>> q.push(Item('to'), 5)

>>> q.push(Item('do'), 4)

>>> q.push(Item('in'), 2)

>>> q.push(Item('java'), 1)

>>> q.pop()

Item('to') #5

>>> q.pop()

Item('do') #4

>>> q.pop()

Item('in') #2

>>> q.pop()

Item('how') #1

>>> q.pop()

Item('java') #1

学习愉快!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消