collections 集合模块,提供了许多有用的集合类
from collections import namedtuple Point = namedtuple('Point',['x','y']) p = Point(1,2) print(p.x) #1 print(p.y) #2
namedtuple是一个函数,定义一种数据类型,具备tuple的不变性,用以构建只有少数属性,但是没有方法的对象,可根据属性来引用
deque 使用list时,访问快,但插入和删除很慢,使用deque可以高效实现插入和删除操作的双向列表,适用于队列和栈

1 from collections import deque 2 3 q = deque(['a','b','c']) 4 q.append('s') 5 q.append('p') 6 print(q) #deque(['a', 'b', 'c', 's', 'p']) 7 q.pop() 8 print(q) #deque(['a', 'b', 'c', 's']) 9 q.appendleft('t') 10 print(q) 11 q.popleft() #deque(['t', 'a', 'b', 'c', 's']) 12 print(q) #deque(['a', 'b', 'c', 's'])
defaultdict 除了在key不存在时返回默认值,其他行为跟dict完全一样

1 from collections import defaultdict 2 3 dd = defaultdict(lambda:'不存在的') 4 dd['key1'] = 'a' 5 print(dd['key1']) #a 6 print(dd['key2']) #不存在的
OrderedDict 使用dict时,对dict迭代无法确定key的顺序

1 from collections import OrderedDict 2 3 od = OrderedDict([('a',1),('b',2),('c',3)]) 4 print(od) #OrderedDict([('a', 1), ('b', 2), ('c', 3)])
Countter 简单的计数器
1 from collections import Counter 2 3 c = Counter() 4 for ch in 'qsccftthn': 5 c[ch] = c[ch]+1 6 print(c)
base64 用记事本打开exe
、jpg
、pdf
这些文件时,会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。

1 import base64 2 3 print(base64.b64encode(b'abcdefg')) #b'YWJjZGVmZw==' 4 print(base64.b64decode(b'YWJjZGVmZw==')) #b'abcdefg'