Python中的collections模块
【摘要】 Python中的collections模块
目录
为什么要有内置模块
Python的内置模块集合有几个关键数据结构,开发人员在使用时可以直接调用这些结构,而无需自己重复制作轮子。这可以提高开发效率。
collections模块的作用
我们通常用于deque双端队列的python内置列表类的append、extend和pop方法从列表的末尾执行(默认情况下,pop()弹出最后一个元素)。使用时,列表类似于堆栈结构(LIFO)。不同之处在于,列表更灵活,并且具有基于堆栈的动态插入方法。
collections模块实现的方法
一、namedtuple方法
我们知道数学上有坐标一说,比如a点在原点我们就可以用以下方法来表示a的坐标
可是放在Python当中我们一眼看来a = (0,0)只是代表一个含有两个元素的元祖而已,那么我们如何将a改变一下是我们一眼就可以知道该表达式表示坐标
按如下方法即可以实现
现在我们不仅可以一眼看出它是个坐标,并且可以像调用类的属性一样获取到a坐标的x和y轴上的坐标值,这样一来就会更加方便了。
但是光用这个方法来表示坐标岂不是很没有意思,那我们来用该方法定义一块饼干
输出结果
这样我们就可以直接调用.的方法来得到饼干的相关属性了,这样就变得十分方便了
二、defaultdict方法
defaultdict类:
Defaultdict是Python内置dict类的一个子类。第一个参数是default_factory属性提供初始值,默认值为None。它重写一个方法并添加一个可写实例变量。它的其他功能与dict相同,但它为不存在的键提供了默认值,以避免KeyError异常。
如果题目有以下要求
将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
如果按平常的写法的话是难以写出的,这时我们就可以使用如下方法
rom collections import defaultdict values = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) for value in values: if value>66: my_dict['k1'].append(value) else: my_dict['k2'].append(value) print(my_dict)
deque(双端队列)方法
双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。
双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。
操作:Deque() 创建一个空的双端队列 | append()向双端队列后面放数据 | appendleft()向双端队列前面放数据 | pop()向双端队列后面取数据 | popleft()向双端队列前面取数据| add_front(item) 从队头加入一个item元素 | add_rear(item)从队尾加入一个item元素
| remove_front() 从队头删除一个item元素 | remove_rear()从队尾删除一个item元素
| is_empty() 判断双端队列是否为空 | size() 返回队列的大小栗子:
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)