您的位置:首页 > 理论基础 > 数据结构算法

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实现一个优先级队列

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)


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: