序列解压:
x,y=(1,2)
a,*b=[1,2,3,4,5]
collections.deque,只保留有限个元素的历史记录
q.append 队尾添加元素
q.appendleft 队首添加元素
q.pop 队尾出队
q.popleft 队首出队
队列两端插入或删除元素的时间复杂度都为O(1)
列表在开头插入或删除元素的时间复杂度都为O(N)
获取最大最小的N个元素
heapq 模块nlargest()和nsmallest()
可以通过指定key参数接收比较函数来应用到更复杂的数据结构
内部结构为堆,查找唯一最大最小元素,max/min更快一些,如果N的大小趋近于集合大小sorted(items)[:N]和sorted(items)[-N:]更好一些
heapq小头堆排序
collections模块 DefaultDict,OrderedDict
DefaultDict:提供默认值的字典
OrderedDict:排序的字典,大小会是普通字典的两倍
字典比较、排序:通过zip和sorted来解决
slice() 创建一个切片对象
collections.Counter
计数统计,most_commen()
a+b,a-b集合运算
from operator import itemgetter
通过关键字对字典排序,速度稍好于lambda表达式
sorted(users, key=itemgetter('uid'))
from operator import attrgetter
通过属性对自定义对象排序,速度稍优于lambda表达式
from itertools import groupby
通过某个属性进行记录分组,必须先对集合按照分组属性进行排序
from itertools import compress
它以一个 iterable 对象和一个相对应的 Boolean 选择器序列作为输入参数。 然后输出 iterable 对象中对应选择器为 True 的元素
from collections import namedtuple
映射名称到序列元素,命名元组
from collections import ChainMap
接受多个字典并将它们在逻辑上变为一个字典