【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集合的左边和右边进行操作而不会有影响。

posted @ 2020-02-12 18:55  Skye_Zhao  阅读(223)  评论(0编辑  收藏  举报