heapq简析
来源:互联网 发布:淘宝开店资料出售 编辑:程序博客网 时间:2024/05/29 19:41
今天发现了一个很好玩的python模块-heapq
heapq是python核心库之一,运用的是最小堆的排序算法。它保证了列表在一系列操作之后,始终保证了a[0]是最小值。
最小堆排序算法:简单来说,就是数据储存在一个二叉树中,这个二叉树的父结点始终比子结点小,因此根结点就是最小的值。每次取出最小值,只要比较两个子结点就可以决定根的值,下一个最小值也就继续留在a[0]
In [1]: from heapq import *In [2]: h = [2,3,4,1,6,3,5,8,6]In [3]: heappop(h)Out[3]: 2
heappop就是每次取最小值。避免了先排序,然后取值,最后再删除的繁琐步骤。
应用场景还是很广泛的,比如我设计了一个排行榜,每次显示前十名。这里有可以取多组最大和最小值的方法:
In [5]: nlargest(3, h)Out[5]: [8, 6, 6]In [6]: nsmallest(2, h)Out[6]: [1, 3]另外这个类似于字典的功能更有趣:
In [7]: h = []In [8]: heappush(h, (5, 'shoot'))In [9]: heappush(h, (3, 'fly'))In [10]: heappush(h, (8, 'marry'))In [11]: heappush(h, (4, 'kik'))In [12]: heappop(h)Out[12]: (3, 'fly')我可以设计个小游戏,把每一节都设计的很碎,然后用以(难度,名称)存储。你可以随意玩,当让我推荐下一步,我就把难度最低的推荐给你。我这边很轻松的去重,也不用排序。
当设计一款智力游戏,是不是可以把获得胜利的可能性都以上述形式储存,然后当玩家希望提示,抛出一个来。
看看过几天是不是有时间,根据这个设计一个小算法出来。
——————————————————
github主页:https://github.com/gt11799
E-mail:gting405@163.com
0 0
- heapq简析
- heapq
- python heapq
- python heapq
- python-heapq
- Python -- 堆数据结构 heapq
- [Python]heapq 堆模块
- Python heapq模块
- Python heapq模块
- Python heapq模块
- Python heapq priority queue
- Python 妙用heapq
- Python 库之heapq
- Python中的heapq模块
- 5.4 heapq--堆队列算法
- python bisect, re以及heapq
- heapq( Heap queue algorithm)库
- python: 堆操作 (heapq库)
- [金融类笔试] 程序员笔试题--民生银行
- 【android】Socket简单用法
- Unity3D优化总结
- 简单斐波那契(递归)
- leetcode Pascal's Triangle
- heapq简析
- 如何通过自学,成为数据挖掘“高手”?
- 用s5pc100的GPIO模拟IIC
- leetcode Pascal's Triangle II
- 如何重启MYsql服务
- POA 1160 Post Office
- 利用Volley和JSON从服务器里加载数据
- linux sed 命令解释
- HTTP状态码