collections模块 python

Python的collections模块提供了五种数据结构:namedtuple用于创建带命名的元组子类;deque是双端队列,支持快速插入和删除;Counter是计数器,统计元素出现次数;OrderedDict保持键插入的顺序;defaultdict在键不存在时返回默认值。这些数据结构增强了Python的基本类型功能。
摘要由CSDN通过智能技术生成

一、总述

众所周知,Python有基本的数据类型(字符型str,整型int,列表list,元组tuple,字典dict等)。
collections模块在以上数据类型的基础上引入了五种数据结构,更好地满足了编码需求。
1.namedtuple():生成可以用名字来访问元素内容的tuple子类
2.deque:双端队列,可以快速从另一侧追加和推出对象
3.Counter:计数器,主要用来计数
4.OrderedDict:有序字典
5.defaultdict:带有默认值的字典

1.namedtuple()

tuple是不可变的元组,为了增加代码的可读性,可以用**namedtuple()**创建自定义的tuple对象,这个对象是tuple 的子类。**namedtuple()**产生可以使用名称来访问元素的数据对象。

from collections import namedtuple
websites = [
    ('google','http://www.google.com/', u'张朝阳'),
    ('Sina', 'http://www.sina.com.cn/', u'王志东'),
    ('163', 'http://www.163.com/', u'丁磊')
    ]

Website = namedtuple('Website',['name','url','founder'])
for website in websites:
    website = Website._make(website)
    print(website)
# 结果
# Website(name='google', url='http://www.google.com/', founder='张朝阳')
# Website(name='Sina', url='http://www.sina.com.cn/', founder='王志东')
# Website(name='163', url='http://www.163.com/', founder='丁磊')

2.deque

dequedouble-ended queue(双端队列)的缩写,它实现了从队头快速增加和取出对象:.popleft().appendleft()
在Python中查找元素的时间复杂度为O(1),增删元素的时间复杂度为O(n)。

原生的list从队头增删元素:
ls.insert(0, v)
ls.pop(0)

deque增删元素的时间复杂度为O(1)。

#例1
from collections import deque
q = deque([1,2,3,4,5])

#在队尾添加元素6
q.append(6)
print(q) #deque([1, 2, 3, 4, 5, 6])

#在队头添加元素0
q.appendleft(0)
print(q) 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值