了解一下python内建模块collections


Posted in Python onSeptember 07, 2020

在使用Python的过程中,一定是离不开数据结构的, 也就是List-列表,Tuples-元组,Dictionaries-字典。
那实际应用中我们更多的还是要去操作这些结构里的数据。比如,在列表后面添加元素,那么就会用到append() 方法。
那除了这些本身的操作方法之外,还有一个Python内建模块——collections,也提供了不少使用的方法,今天来捋一下。

一、Counter

这是一个计数器,我们可以用来方便的统计出一些元素出现的次数,比如String、List、Tuples等等。

String

from collections import Counter

c = Counter("HelloKitty")

print(c)

#运行结果:
Counter({'l': 2, 't': 2, 'H': 1, 'e': 1, 'o': 1, 'K': 1, 'i': 1, 'y': 1})

List

from collections import Counter

c = Counter(["苹果", "樱桃", 1, 1, 4, 4, 5])

print(c)

#运行结果:
Counter({1: 2, 4: 2, '苹果': 1, '樱桃': 1, 5: 1})

二、deque

我们很喜欢用list来存放数据,因为非常的方便。但是list的缺点也很明显,如果你是按索引访问元素就很快,但是插入和删除元素就很慢。
当然了,数据量小的时候肯定是感知不到的,只有当数据量大的时候,你才会发现这个缺点,因为list是线性数据结构,比如插入这个动作,需要把它后面的元素都挪一位。
deque除了实现list的append()和pop()外,还提供了appendleft()和popleft(),这样的话我们可以很方便的向着列表的另一头,进行添加和移除操作了。

from collections import deque

deque_list = deque(['a', 'b', 'c', 'd'])
deque_list.append('苹果')
deque_list.appendleft('吃')

print(deque_list)

#运行结果:
deque(['吃', 'a', 'b', 'c', 'd', '苹果'])

三、OrderedDict

使用Python,大家自然知道Dict字典中的key是无序的。那如果你想要保持key的顺序的话,用OrderedDict即可。

from collections import OrderedDict

list_a = [(1, "苹果"), (2, "香蕉"), (3, "西瓜"), (4, "芒果")]

order_dict = OrderedDict(list_a)
print(order_dict)

#运行结果:
D:\Daily
λ python whatiscollections.py
OrderedDict([(1, '苹果'), (2, '香蕉'), (3, '西瓜'), (4, '芒果')])

如果有场景中需要使用到,可以试试这几种用法。

以上就是了解一下python内建模块collections的详细内容,更多关于python collections的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
跟老齐学Python之集成开发环境(IDE)
Sep 12 Python
Python中运行并行任务技巧
Feb 26 Python
使用Python构建Hopfield网络的教程
Apr 14 Python
Python环境下搭建属于自己的pip源的教程
May 05 Python
wxPython之解决闪烁的问题
Jan 15 Python
使用python读取txt文件的内容,并删除重复的行数方法
Apr 18 Python
Python3匿名函数用法示例
Jul 25 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
python yield和Generator函数用法详解
Feb 10 Python
使用python脚本自动生成K8S-YAML的方法示例
Jul 12 Python
python pygame入门教程
Jun 01 Python
Python pymsql模块的使用
Sep 07 #Python
Python虚拟环境的创建和使用详解
Sep 07 #Python
python用Tkinter做自己的中文代码编辑器
Sep 07 #Python
利用Python将图片中扭曲矩形的复原
Sep 07 #Python
python利用递归方法实现求集合的幂集
Sep 07 #Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 #Python
python简单利用字典破解zip文件口令
Sep 07 #Python
You might like
自制汽车收音机天线:收听广播的技巧和方法
2021/03/02 无线电
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
用javascript实现给出的盒子的序列是否可连为一矩型
2007/08/30 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
nodejs个人博客开发第二步 入口文件
2017/04/12 NodeJs
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
Python实现冒泡,插入,选择排序简单实例
2014/08/18 Python
简单解析Django框架中的表单验证
2015/07/17 Python
python自动重试第三方包retrying模块的方法
2018/04/24 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
python 用opencv实现图像修复和图像金字塔
2020/11/27 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
Html5原生拖拽相关事件简介以及基础实现
2020/11/19 HTML / CSS
编程用JAVA解析XML的方式
2013/07/07 面试题
预备党员思想汇报范文
2013/12/29 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
2014年教研活动总结范文
2014/04/26 职场文书
光荣之路观后感
2015/06/12 职场文书
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS