堆(heap):优先队列的一种,使用优先队列能够以任意顺序增加对象,并且能在任意时间(可能在增加对象的同时)找到(也可能是移除)最小元素,比用于列表中min的方法要高效。

Python中并没有独立的堆类型,只有一个包涵一些堆操作函数的模块,这个模块叫heapq.

import heapq

1.heapq.heappush(heap,item)  #heap为定义堆,item 增加的元素;

eg.

heap=[]
  heapq.heappush(heap, 2)

2.heapq.heapify(list)        #将列表转换为堆

eg.

list=[5,8,0,3,6,7,9,1,4,2]

heapq.heapify(list)

3.heapq.heappop(heap)       
#删除最小的值

eg.

heap=[2, 4, 3, 5, 7,
8, 9, 6]

heapq.heappop(heap) ---->heap=[3, 4, 5, 7, 9,
6, 8]

4.heapq.heapreplace(heap,
item)   
 #删除最小元素值,添加新的元素值

eg.

heap=[2, 4, 3, 5, 7, 8,
9, 6]

heapq.heapreplace(heap,
11) ------>heap=[2, 3, 4, 6, 8, 5, 7, 9, 11]

5.heapq.heappushpop(heap,
item)    
#首判断添加元素值与堆的第一个元素值对比,如果大于则删除最小元素,然后添加新的元素值,否则不更改堆

eg.

条件:item >heap[0]

heap=[2, 4, 3, 5, 7, 8, 9, 6]

heapq.heappushpop(heap, 9)---->heap=[3, 4, 5, 6, 8, 9, 9,
7]

条件:item

heap=[2, 4, 3, 5, 7, 8, 9, 6]

heapq.heappushpop(heap, 9)---->heap=[2, 4, 3, 5, 7, 8, 9,
6]

6.heapq.merge(...)            
#将多个堆合并

7.heapq.nlargest (n,
heap)    
#查询堆中的最大元素,n表示查询元素个数

eg.

heap=[2, 3, 5, 6, 4, 8,
7, 9]

heapq.nlargest (1,
heap)--->[9]
8.heapq.nsmallest(n,
heap)    
#查询堆中的最小元素,n表示查询元素个数

eg.

heap=[2, 3, 5, 6, 4, 8,
7, 9]

heapq.nlargest (1,
heap)--->[2]

python学习笔记29(python中堆的使用)的更多相关文章

  1. python 学习笔记 9 -- Python强大的自省简析

    1. 什么是自省? 自省就是自我评价.自我反省.自我批评.自我调控和自我教育,是孔子提出的一种自我道德修养的方法.他说:“见贤思齐焉,见不贤而内自省也.”(<论语·里仁>)当然,我们今天不 ...

  2. python学习笔记(一):python简介和入门

    最近重新开始学习python,之前也自学过一段时间python,对python还算有点了解,本次重新认识python,也算当写一个小小的教程.一.什么是python?python是一种面向对象.解释型 ...

  3. python学习笔记:python数字

    一.数字类型分类 数字提供了标量存储和直接访问,它是不可更改类型,也就是说变更数字的值会产生新的对象.python的对象模型与常规对象模型有些不同,对数字对象的更新,实际上是生成了一个新的数值对象,并 ...

  4. python 学习笔记一——Python安装和IDLE使用

    好吧,一直准备学点啥,前些日子也下好了一些python电子书,但之后又没影了.年龄大了,就是不爱学习了.那就现在开始吧. 安装python 3 Mac OS X会预装python 2,Linux的大多 ...

  5. 吴裕雄--天生自然python学习笔记:python 文件批量查找

    在多个文本文件中查找 我们首先来学习文本文件的查找字符 . 我们通过 os.walk 扩大查找范围, 查找指定目录和子目录下的文件. 应用程序总览 读取 当 前目录及子目录下的所有 PY 和 txt ...

  6. python学习笔记(python简史)

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum) 目前python主要应用领域: ·云计算 ·WEB开发 ·科学运算.人工智能 ·系统运维 ·金融:量化交 ...

  7. python学习笔记之——python模块

    1.python模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块让你能够有逻辑地组织你的 Python ...

  8. Python学习笔记 - day12 - Python操作NoSQL

    NoSQL(非关系型数据库) NoSQL,指的是非关系型的数据库.NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称.用于超大规模数据的存储.(例如 ...

  9. python学习笔记(1)--python特点

    python诞生于复杂的信息系统时代,是计算机时代演进的一种选择. python的特点,通用语言,脚本语言,跨平台语言.这门语言可以用于普适的计算,不局限于某一类应用,通用性是它的最大特点.pytho ...

随机推荐

  1. Radware中APPDirector系列的Farm Table中的session mode参数说明

    Session mode中共有5种会话保持方式:1.Regular,是普通的会话保持,形成的表项是:Client ip+Server ip的形式2.EntryPerSession(EPS),是端口与i ...

  2. hdu 3473 裸的划分树

    思路: 用Sum[dep][i]记录从tree[po].l到i中进入左子树的和. #include<iostream> #include<algorithm> #include ...

  3. 【XMLRPC实现跨语言编程】Tcl <----> python

    转载请声明出处,谢谢合作. # 期望一种能实现tcl.python两者解释器能双向通讯的结合体# py->tcl: from Tkinter import Tcl; tcl = Tcl(); t ...

  4. poj1472[模拟题]

    Instant Complexity Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2017   Accepted: 698 ...

  5. fadein()

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. Jersey(1.19.1) - Client API, Using filters

    Filtering requests and responses can provide useful functionality that is hidden from the applicatio ...

  7. Linux 命令 - service: 系统服务管理

    命令格式 service SCRIPT COMMAND [OPTIONS] service --status-all service --help | -h | --version 实例 a) 查看 ...

  8. hive创建表带中文注释报错解决方法

    hive创建带有中文注释的表报错: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask ...

  9. 【转】用capability 特征加强Linux系统安全

    用capability 特征加强Linux系统安全 摘要:传统UNIX系统的访问控制模型非常简单——普通用户对超级用户.在这种模型中,一个进程或者帐户要么只有很小的权限,要么具有全部的系统权限.显然, ...

  10. 设置Oracle 12C OEM 端口

    SQL);   打开OEM: http://DBSIPOrName:8087/em/