Python标准模块collections专门用于定义特殊 容器 也就是特殊序列类 是通过基本数据类型变形而来 详情见下图
deque定义 双端队列
创建一个deque对象
from collections import deque deque1 deque([ hello , world , 1, 2, 3])
常用方法
1、append 从尾部添加元素
2、appendleft 从头部添加元素
3、pop 从尾部弹出元素 有返回值
4、popleft 从头部弹出元素 有返回值
5、extend 从尾部添加多个元素 需要传入一个列表
6、extendleft 从头部添加多个元素
7、insert 从指定位置添加元素
8、rotate 尾部的元素移动到头部 可传递参数 表示翻滚几次 默认值为1
ChainMap定义 字典的 容器 可以放入多个字典
常用方法
1、get 获取指定key的value
2、new_child 往容器中添加字典 在头部进行添加
3、pop 弹出map[0] 也就是第一个字典中指定的key 并返回对应的value
4、popitem 弹出map[0]中尾部的key和value 并返回对应的key和value
5、clear 清空map[0] 留下一个空字典
6、maps 返回一个包含所有字典的列表
注意点
在容器中对字典进行操作 都会作用到原字典中
nametuple定义 是一个工厂函数 创建又名的元组对象 创建的元组具有tuple类的所有方法
创建一个nametuple对象
from collections import namedtuple Point namedtuple( Point , [ x , y ]) shenzhen Point(x 220, y 115)OrderedDict
定义 可排序的字典容器 元素可移动
常用方法
popitem 弹出字典最后的键值对 可修改last参数
move_to_end 将指定的键值对移动到字典最后 可修改last参数 last参数默认为True
Counter定义 创建计数器对象
创建Counter对象
1、不传递参数 将创建一个空的计数器
2、传递可迭代对象 传递序列将统计序列中每个元素出现的次数。传递字符串的话 计数器会将字符串拆分成单个字符 统计每个字符的个数
常用方法
1、most_common 返回一个出现次数最多的前n位
from collections import Counter list1 [1, 2, 3, 4, 2, 3, 2, 5] counter1 Counter(list1) print(counter1.most_common(2)) # [(2,3), (3,2)]出现最多的两个元素
2、update 往计数器中添加内容 可迭代对象、字符串、计数器 重新计数
3、subtract 从计数器中删除内容 参数同上 重新计数 允许出现负数
4、elements 返回一个可迭代对象 迭代时会将相同的元素排列在一起迭代出来
5、copy 拷贝 将计数器拷贝一份
6、算数操作 两个计数器可以做算数运算 计数器相加 、- 计数器相减 不保留负数 、 计数器相交 、| 计数器并集
总结 本次主要介绍了一些特殊的序列类 在开发中可以根据需求选择不同的类型简化代码 在AI中最常见的时Counter这个类型 用于统计列表中元素的个数 属于特征工程部分 大家要在实际开发中多使用这些类型



