Python collections 模块学习笔记

16 sec read

在Python中有一些内置的数据类型,比如int, str, list, tuple, dict等。Python的collections模块在这些内置数据类型的基础上,提供了几个额外的数据类型:

namedtuple() 生成可以使用名字来访问元素内容的tuple子类
deque 类似列表(list)的容器,实现了在两端快速添加(append)和弹出(pop)
Counter 字典的子类,提供了可哈希对象的计数功能
OrderedDict 字典的子类,保存了他们被添加的顺序
defaultdict 字典的子类,提供了一个工厂函数,为字典查询提供一个默认值
UserDict 封装了字典对象,简化了字典子类化
UserList 封装了列表对象,简化了列表子类化
UserString 封装了列表对象,简化了字符串子类化

namedtuple()

namedtuple主要用来产生可以使用名称来访问元素的数据对象,通常用来增强代码的可读性, 在访问一些tuple类型的数据时尤其好用。

deque

deque其实是 double-ended queue 的缩写,翻译过来就是双端队列,它最大的好处就是实现了从队列 头部快速增加和取出对象: .popleft(), .appendleft() 。

你可能会说,原生的list也可以从头部添加和取出对象啊?就像这样:

但是值得注意的是,list对象的这两种用法的时间复杂度是 O(n) ,也就是说随着元素数量的增加耗时呈 线性上升。而使用deque对象则是 O(1) 的复杂度,所以当你的代码有这样的需求的时候, 一定要记得使用deque。作为一个双端队列,deque还提供了一些其他的好用方法,比如 rotate 等。

Counter

Counter是一个简单的计数器,例如,统计字符出现的个数:

OrderedDict

有序词典就像常规词典一样,但有一些与排序操作相关的额外功能。由于内置的 dict 类获得了记住插入顺序的能力(在 Python 3.7 中保证了这种新行为),它变得不那么重要了。

defaultdict

我们都知道,在使用Python原生的数据结构dict的时候,如果用 d[key] 这样的方式访问, 当指定的key不存在时,是会抛出KeyError异常的。但是,如果使用defaultdict,只要你传入一个默认的工厂方法,那么请求一个不存在的key时, 便会调用这个工厂方法使用其结果来作为这个key的默认值。

参考链接:https://docs.python.org/zh-cn/3/library/collections.html

打赏作者
微信支付标点符 wechat qrcode
支付宝标点符 alipay qrcode

WordPress又被黑了,解决方案记录

过了一个周末,今天整个网站打开无样式,后台无法打开,直接跳转到其他网站,才意识到网站可能被黑了。查看源代码:
标点符
1 min read

Python短文本分类:LibShortText和TextG…

LibShortText LibShortText是一个开源的Python短文本(包括标题、短信、问题、句子等
标点符
1 min read

条件随机场(CRF)及CRF++安装使用

CRF简介 CRF是用来标注和划分序列结构数据的概率化结构模型。言下之意,就是对于给定的输出,标识序列Y和观测
标点符
10 min read

发表评论

电子邮件地址不会被公开。 必填项已用*标注