Python Cookbook - 1 - 数据结构和算法
2024-10-19 06:24:05
1 序列解压:通过*来通配
*a, b = somelist, first, *mid, last = somelist, a, *b = somelist
2 使用双向队列: from collections import deque
q = deque(maxlen=5) 可以固定长度
q = deque() 也可以任意长度
可以从两端进行插入和删除,append, appendleft, pop , popleft
3 查找最大或最小的N个元素: 使用heapq (堆队列)
heapq.nlargest(N, alist) heapq.nsmallest(N, alist) 适合N相对较小时
也可以sorted(alist)[-N:] sorted(alist)[:N] 适合N相对较大时
4 实现一个优先级队列
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]
5 字段中的键映射多个值 defaultdict
from collections import defaultdict
d = defaultdict(list)
d['a'].append(1)
d['a'].append(2)
d['b'].append(5)
最新文章
- 如何用Dockerfile创建镜像
- js 中与元素有关的高度
- canvas对象arc函数的使用-遁地龙卷风
- IOS- Run Loops
- Apache与Nginx的区分比较
- fscanf()函数具体解释
- java正则表达式,将字符串中\后的第一个字母变成大写
- 【图像识别】 图像处理和图像分析(leptonica)leptonica-1.68安装配置 (vs2008)
- 疯狂Java学习笔记(84)----------大约 Java 对象序列化,你不知道 5 事
- (一)Python之猜数游戏
- Nginx日志切割案例讲解,Nginx的知识讲解
- FiddlerCoreAPI开发(一)源码分析
- Maven的Archetype简介
- Java多线程JUC
- Python编程从入门到实践笔记——字典
- 多线程——C++
- Android Eclipse 安装教程 hosts替换
- 日志那点事儿——slf4j源码剖析
- numpy笔记—np.squeeze用法
- C# SpinLock实现
热门文章
- Aa3.0 事件机制
- 自己通过反射写的一个属性copy类
- BAPI_GOODSMVT_CREATE 移动类型201 CODE = '03' 代码
- md5证书在window2012不能访问
- Linux常用命令汇总及使用方法(二)之文本编辑器VI
- FireFox的配置文件的引用
- shell中$(( )) 与 $( ) 还有${ }的区别
- 数据库及SQL优化
- JavaBean 反射机制实现自动配置数据
- hdu1020