【collections】集合模块
标准库 collections 是 python 内建的一个集合模块,里面封装了许多集合类。
概述
collections模块包含了除list、dict、和tuple之外的容器数据类型,如counter、defaultdict、deque、namedtuple、orderdict等。
这个模块实现了特定目标的容器,以提供Python标准内建容器 dict , list , set , 和 tuple 的替代选择。参考python3.8.1文档
类/对象 | 说明 |
---|---|
namedtuple() | 创建命名元组子类的工厂函数 |
deque | 类似列表(list)的容器,实现了在两端快速添加(append)和弹出(pop) |
ChainMap | 类似字典(dict)的容器类,将多个映射集合到一个视图里面 |
Counter | 字典的子类,提供了可哈希对象的计数功能 |
OrderedDict | 字典的子类,保存了他们被添加的顺序 |
defaultdict | 字典的子类,提供了一个工厂函数,为字典查询提供一个默认值 |
UserDict | 封装了字典对象,简化了字典子类化 |
UserList | 封装了列表对象,简化了列表子类化 |
UserString | 封装了列表对象,简化了字符串子类化 |
deque
collections 中队列相关的集合只有一个:deque。
deque 是双边队列(double-ended queue),具有队列和栈的性质,在 list 的基础上增加了移动、旋转和增删等。deque是通过extend方法初始化集合元素的。
deque(maxlen=N)创建一个固定长度的队列。当有新纪录加入而队列已满时会自动移除最老的那条记录。
d = collections.deque([]) | 说明 |
---|---|
d.append('a') | 在最右边添加一个元素,此时 d=deque('a') |
d.appendleft('b') | 在最左边添加一个元素,此时 d=deque(['b', 'a']) |
d.extend(['c','d']) | 在最右边添加所有元素,此时 d=deque(['b', 'a', 'c', 'd']) |
d.extendleft(['e','f']) | 在最左边添加所有元素,此时 d=deque(['f', 'e', 'b', 'a', 'c', 'd']) |
d.pop() | 将最右边的元素取出,返回 'd',此时 d=deque(['f', 'e', 'b', 'a', 'c']) |
d.popleft() | 将最左边的元素取出,返回 'f',此时 d=deque(['e', 'b', 'a', 'c']) |
d.rotate(-2) | 向左旋转两个位置(正数则向右旋转),此时 d=deque(['a', 'c', 'e', 'b']) |
d.count('a') | 队列中'a'的个数,返回 1 |
d.remove('c') | 从队列中将'c'删除,此时 d=deque(['a', 'e', 'b']) |
d.reverse() | 将队列倒序,此时 d=deque(['b', 'e', 'a']) |
deque是线程安全的,也就是说你可以同时从deque集合的左边和右边进行操作而不会有影响。