Python Cookbook - 1 - 数据结构和算法
2016-04-28 00:55
369 查看
1序列解压:通过*来通配
*a,b=somelist,first,*mid,last=somelist,a,*b=somelist
2使用双向队列:fromcollectionsimportdeque
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实现一个优先级队列
5字段中的键映射多个值defaultdict
*a,b=somelist,first,*mid,last=somelist,a,*b=somelist
2使用双向队列:fromcollectionsimportdeque
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实现一个优先级队列
importheapq classPriorityQueue: def__init__(self): self._queue=[] self._index=0 defpush(self,item,priority): heapq.heappush(self._queue,(-priority,self._index,item)) self._index+=1 defpop(self): returnheapq.heappop(self._queue)[-1]
5字段中的键映射多个值defaultdict
fromcollectionsimportdefaultdict
d=defaultdict(list) d['a'].append(1) d['a'].append(2) d['b'].append(5)
相关文章推荐
- 数据结构实验:将十进制数转成其它进制,C语言实现
- poj--2823 Sliding Window(单调队列)
- 几个简单的排序算法
- 循环链表
- redis之数据结构--上
- linux内核源码分析(内存管理)--之数据结构
- 数据结构-队列的链式存储(链队列)
- 【线段树】浅谈区间问题(1)
- 第五章 Python数据结构
- 数据结构 - 线性表的顺序实现
- 线索化二叉树
- 打算使用纯C开发一个数据结构及算法库,欢迎大家指正
- 数据结构--百度百科
- 【数据结构】浅谈算法和数据结构:优先队列和堆排序
- 【数据结构】优先队列,堆
- 折半插入排序
- 【数据结构】 栈
- 用Navicat进行数据结构同步操作
- Java数据结构--排序
- 数据结构中哈夫曼树水题代码