Python利用heapq实现一个优先级队列的方法
作者:LazyCat_CiCi 发布时间:2021-08-05 06:28:48
标签:Python,heapq,优先,队列
实现一个优先级队列,每次pop的元素要是优先级高的元素,由于heapq.heapify(list)默认构建一个小顶堆,因此要将priority变为相反数再push,代码如下:
import heapq
class PriorityQueue(object):
"""实现一个优先级队列,每次pop优先级最高的元素"""
def __init__(self):
self._queue = []
self._index = 0
def push(self,item,priority):
heapq.heappush(self._queue,(-priority,self._index,item))#将priority和index结合使用,在priority相同的时候比较index,pop先进入队列的元素
self._index += 1
def pop(self):
return heapq.heappop(self._queue)[-1]
if __name__ == '__main__':
pqueue = PriorityQueue()
pqueue.push('d',4)
pqueue.push('f',3)
pqueue.push('a',6)
pqueue.push('s',2)
print(pqueue.pop())
print(pqueue.pop())
print(pqueue.pop())
来源:https://blog.csdn.net/Jmiew123/article/details/68951054
0
投稿
猜你喜欢
- 前言Django的模型(Model)的本质是类,并不是一个具体的对象(Object)。当你设计好模型后,你就可以对Model进行实例化从而创
- pygame城市之战横版射击游戏,按上下左右方向箭头操作飞机。这是一个横板射击小游戏,在黑夜的城市上空,你将要操作一架飞机去射击敌机, * 效
- 准备工作我们需要把秒杀的商品加入购物车,因为脚本点击的是全选,所以不需要的商品要移出购物车。过程分析1.打开某宝网站;pq = webdri
- 线上有个需求,格式化,从一堆s1,s100-s199中找出连续的服并且格式化显示出来,如:神魔:S106-109,s123,s125御剑:
- 简介 本文介绍解决SecureCRT通过SSH连接Ubuntu时vi命令有多余的m的问
- 学习内容1.软件安装及服务器设置。2.(选做,但是强烈建议) 使用图形界面软件 Navicat for SQL3.数据库基础知识数据库定义关
- 从几年前开始学习编程直到现在,一直对程序中的异常处理怀有恐惧和排斥心理。之所以这样,是因为不了解。这次攻python,首先把自己最畏惧和最不
- 实现网页的键盘输入操作from selenium.webdriver.common.keys import Keys * 页有时需要将鼠标
- 链接:https://pan.baidu.com/s/1l2yiba7ZTPUTf41ZnJ4PYw提取码:t3bqwin10安装tesse
- 实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时候你可以通过创建一个新的异常类来拥有自己的异常。异常类继承自 Exception
- 函数名:FenYe(url,pageCount,recordCount,curPage,cssstyle)  
- 创建索引:MySql创建索引的语法如下:CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
- 本文实例为大家分享了Python模拟用户登录验证的具体代码,供大家参考,具体内容如下1.功能简介此程序模拟用户登录验证的过程,实现用户名输入
- 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那
- 本文实例为大家分享了python交互式图形编程的具体代码,供大家参考,具体内容如下#!/usr/bin/env python3# -*- c
- 环境配置1:安装mysql,环境变量添加mysql的bin目录环境配置2:python安装MySQL-Python请根据自身操作系统下载安装
- 本文实例讲述了mysql自定义函数原理与用法。分享给大家供大家参考,具体如下:本文内容:什么是函数函数的创建函数的调用函数的查看函数的修改函
- 学了一个礼拜Python之后写的,代码很粗糙,只是为了完成利用163邮箱远程关电脑功能。直接把代码发上来吧。要执行的话得先安装一些模块,看i
- 1.1 ID定位HTML Tag 的 id 属性值是唯一的,故不存在根据 id 定位多个元素的情况。下面以在百度首页搜索框输入文本
- 今天发现百度图片搜索结果的2级页面改版了,在浏览图片的时候很好用:如图:在浏览图片的时候,右侧的缩略图是这样交互的:因此,在整个浏览图片的过