cookbook学习第二弹

黑加仑妞 黑加仑妞     2022-08-18     562

关键词:

1.5怎样实现一个按优先级排序的队列?并且在这个队列上面每次pop操作总是返回优先级最高的那个元素

带有双下划线的方法,会在需要被调用的位置自动被调用

带有单下划线的变量是私有变量

 下面利用类heapq模块实现一个简单的优先级队列:

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]

下面是它的使用方式:

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)

>>>q.pop()

Item(‘bar‘)

>>> q.pop()
Item(‘spam‘)
>>> q.pop()
Item(‘foo‘)
>>> q.pop()
Item(‘grok‘)

仔细观察可以发现,第一个 pop() 操作返回优先级最高的元素。 另外注意到如果两个有
着相同优先级的元素( foo 和 grok ),pop操作按照它们被插入到队列的顺序返回的

__repr__()函数的作用

str()一般是将数值转成字符串。 
repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思。如list,dict使用str()是无效的,但使用repr可以,这是为了看它们都有哪些值,为了显示之用。 

 

Python中这个_repr_函数,对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串:

  1. 尝试生成这样一个字符串,将其传给 eval()可重新生成同样的对象 ;

  2. 否则,生成用尖括号包住的字符串,包含类型名和额外的信息(比如地址) ;

  3. 一个类(class)可以通过 __repr__() 成员来控制repr()函数作用在其实例上时的行为。

代码例子如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> class D(object):
...     def __str__(self):
...         return "a __str__"
...     def __repr__(self):
...         return "a __repr__"
...
>>> dr = D()
>>> print dr
a __str__
>>> dr
a __repr__
>>> "%s" % dr
‘a __str__‘
>>> "%r" % dr
‘a __repr__‘

python学习——第二弹

前言上一篇文章​​python学习——【第一弹】​​​给大家介绍了python中的基本数据类型等,这篇文章接着给大家补充python中的运算符等相关内容。运算符python中的运算符主要有:算术运算符,赋值运算符,比较运算符,布尔运... 查看详情

pythion第二弹

################################第二节################################################python中数据类型的常见的方法第一个数据类型字符串str字符串里面有很多的功能,叫方法.只要是字符串,就可以用里面的方法,方法有很多,不用刻意的去记住,因为... 查看详情

深入理解threadpoolexecutor第二弹(代码片段)

从源头解析ThreadPoolExecutor第二弹—ThreadPoolExecutor的内部类ThreadPoolExecutor主要包括如下内部类:其中AbortPolicy、CallerRunsPolicy、DiscardOldestPolicy、DiscardPolicy表示任务的拒绝策略,当线程池的线程数量达到最大值并且阻塞队列已... 查看详情

web前端-----第二弹css

CSS语法CSS规则由两个主要的部分构成:选择器,以及一条或多条声明。‘‘‘selector{property:value;property:value;...property:value}‘‘‘例如:h1{color:red;font-size:14px;}    css的四种引入方式 1.行内式       ... 查看详情

表单练习第二弹

---恢复内容开始---<bodytext="#33FF00"bgcolor="#33FF33"background="150358666450342800_a580xH.jpg">body里面加属性,字体颜色、背景色、背景图片。在body里面输入的属性是针对在body里面所有内容的属性。<formaction="../10.9表单/www.baidu.html"method=" 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

...)Python进阶(已完成)Python后台开发爬虫机器学习对每道面试题会附带详细 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

...)Python进阶(已完成)Python后台开发爬虫机器学习对每道面试题会附带详细 查看详情

最强面试题整理第二弹:python进阶面试题(附答案)(代码片段)

...)Python进阶(已完成)Python后台开发爬虫机器学习对每道面试题会附带详细 查看详情

vue学习——第二弹(代码片段)

前言上一篇文章Vue学习——【第一弹】中我们学习了Vue的相关特点及语法,这篇文章接着通过浏览器中的Vue开发者工具扩展来进一步了解Vue的相关工作机制。Vue的扩展我们打开Vue的官方文档,点击导航栏中的生态系统ÿ... 查看详情

线段树+rmq问题第二弹

   线段树+RMQ问题第二弹  上篇文章讲到了基于SparseTable解决RMQ问题,不知道大家还有没有印象,今天我们会从线段树的方法对RMQ问题再一次讨论。正式介绍今天解决RMQ问题的方法之前,我先对RMQ问题的概念再... 查看详情

lca问题第二弹

LCA问题第二弹 上次用二分的方法给大家分享了对LCA问题的处理,各位应该还能回忆起来上次的方法是由子节点向根节点(自下而上)的处理,平时我们遇到的很多问题都是正向思维处理困难而逆向思维处理比较容易,LCA问题... 查看详情

从一个程序员的角度看——微信小应用(第二弹见解)

...小程序刚通过了代码审核(待发布状态),从最初对它的学习到开发到小程序待发布再到28日微信公开课,也算一步步的了解了微信小程序吧。 28日微信pro公开课张小龙针对小程序进行了一些答疑,之后行业的同僚都很关注... 查看详情

dom事件第二弹(uievent事件)

此文章主要总结UIEvent相关的事件,如有不对的地方,欢迎指正。一、uitls.js(绑定事件公共类)varfixs={‘focusin‘:{standard:‘focus‘,ie:‘focusin‘},‘focusout‘:{standard:‘blur‘,ie:‘foucsout‘},‘input‘:{standard:‘input‘,ie:‘propertychange‘}}v... 查看详情

有趣的网站-第二弹

1.预测您的死亡时间,通过输入出生日期,选择性别、BMI范围(可以通过页面下方输入身高、体重计算出)、生活态度和是否抽烟,点击查看按钮就可以得出结果。我测了我还能活52多年。。不过看着时间越来越少,心理感觉毛... 查看详情

获取免费的gpt网站指南(第二弹)

免费虽好,勿要贪杯前言GPT4free的原理是从大网站的接口中当普罗米修斯,如果换一个思路,公网上很多人都部署了自己的GPT服务,如果能够把他们利用起来,实际上我们平时问问题也够用了 查看详情

liaoliao的四连做第二弹

liaoliao四连做第一弹1.bzoj3211:花神游历各国由于$10^9$以内的数最多只会被开方$10$次,所以我们可以用线段树维护然后剪枝..#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<cmath>#defineLLlon 查看详情

hbase存取速度为啥快---第二弹

版权声明:本文为CSDN博主「九品下」的原创文章原文链接:https://blog.csdn.net/w892824196/article/HBase能提供实时计算服务主要原因是由其架构和底层的数据结构决定的,即由LSM-Tree(Log-StructuredMerge-Tree)+HTable(region分区)+Cache决定——客户... 查看详情

『pytorch』第二弹_张量

参考:http://www.jianshu.com/p/5ae644748f21#几个数学概念:标量(Scalar)是只有大小,没有方向的量,如1,2,3等向量(Vector)是有大小和方向的量,其实就是一串数字,如(1,2)矩阵(Matrix)是好几个向量拍成一排合并而成的一堆数字... 查看详情