PythonCookbook
Peace & Love
https://github.com/584807419
展开
-
1.1 将序列分解为单独的变量
只要对象是可迭代的,字符串、文件、迭代器生成器都行,就可以执行分解操作,例如x,y = (4,5)name, date = ['acme', (2012, 12, 12)]_, shares, price, _ = ['acme',50, 91.1, (2012,12,12)]...原创 2019-09-05 15:50:51 · 177 阅读 · 0 评论 -
1.2 从任意长度的可迭代对象中分解元素
1.2 从任意长度的可迭代对象中分解元素使用*表达式来代替多项record = (1,2,3,4,5,6)a,*b,c = recordprint(a,b,c)输出:1 [2, 3, 4, 5] 6原创 2019-09-05 16:03:41 · 166 阅读 · 0 评论 -
1.3 保存最后N个元素
在迭代或者其他形式的处理过程中对最后几项记录做一个有限的历史记录统计from collections import dequedef search(lines, pattern, history): previous_lines = deque(maxlen=history) for line in lines: if pattern in line: ...原创 2019-09-05 16:37:09 · 143 阅读 · 0 评论 -
1.4 找到最大或者最小的N个元素
一、N=1 使用min、max如果只是简单的想找到最小或最大的元素(N=1时),使用min和max最快二、N约等于集合长度,先排序如果N和集合的本身大小差不多,通常更快的方法是先对集合进行排序,然后做切片操作,例如sorted(items)[:N]或者sorted(items)[-N:]三、N小于集合长度 使用heapq如果我们想在某个集合中找到最大或者最小的N个元素,使用heapq中的...原创 2019-09-08 11:25:57 · 518 阅读 · 0 评论 -
1.5 实现优先级队列
想要实现一个队列,能够以给定的优先级来对准荣盛排序,而且每次pop操作时候都会返回优先级最高的那个元素使用heapq模块来实现一个简单的优先级队列import heapqclass PriorityQueue: def __init__(self): self._queue = [] self._index = 0 def push(sel...原创 2019-09-08 12:42:13 · 218 阅读 · 0 评论 -
1.6 在字典中将键映射到多个值上
字典是一种关联容器,每个键都映射到一个单独的值上,如果想让键映射到多个值,需要将这多个值保存到另一个容器如列表或者集合中。要使用列表或者集合取决于应用的意图,如果希望保留应用的插入顺序就用列表,如果希望不重复就用集合。为了能方便的创建这样的字典,可以使用collections模块中的defaultdict类...原创 2019-09-09 17:31:52 · 216 阅读 · 0 评论