itertools 模块
import itertools as its
# 产生ABCD的全排列
a = its.permutations('abcd')
for item in a:
print(type(item),item)
# 产生ABCDE的五选三组合
b = its.combinations('ABCDE', 3)
# 产生ABCD和123的笛卡尔积
c = its.product('ABCD', '123')
# 产生 `A / B / C / A / B` 的顺序无限循环序列
d = its.cycle(('A', 'B', 'C'))
count = 0
for item in d:
print(type(item),item)
count += 1
if count>10:
break
collections 模块
namedtuple
namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
from collections import namedtuple
Point = namedtuple('Point',['x','y','z'])
p = Point(1,2,3)
print(p.x)
deque
deque除了实现list的append()和pop()外,还支持appendleft()和popleft(),这样就可以非常高效地往头部添加或删除元素。
from collections import deque
a = deque([1,2,3,4])
print(a)
print(a.pop())
print(a.popleft())
a.append(1)
a.appendleft(4)
print(a)
defaultdict
除了在Key不存在时返回默认值,defaultdict的其他行为跟dict是完全一样的。
from collections import defaultdict
d = defaultdict(lambda:'n/a')
d['a'] = 1
print(d['a'])
print(d['b'])