摘要:在Python语言入门中,Python的内建模块collections为我们提供了一系列的优化操作,本质上就是元组、字典、集合、列表的特殊功能版。希望对大家学习Python语言入门有所帮助。
在Python语言入门中,Python的内建模块collections为我们提供了一系列的优化操作,本质上就是元组、字典、集合、列表的特殊功能版。希望对大家学习Python语言入门有所帮助。
1. namedtuple
namedtuple是一个函数,它用来创建一个自定义的tuple对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。
这样一来,我们用namedtuple可以很方便地定义一种数据类型,它具备tuple的不变性,又可以根据属性来引用,使用十分方便。需要注意的是它返回的是一个数据类型。
from collections import namedtuple People = namedtuple('People', ['name', 'age', 'sex']) libai = People('libai', '22', 'male') print(libai) print(libai.name) print(isinstance(libai, People)) 打印结果: People(name='libai', age='22', sex='male') libaiTrue
2. deque
从字面上看出来,deque就是一个队列,不过它是双向的,也就是能从两端添加元素。
使用list存储数据时,按索引访问元素很快,但是插入和删除元素就很慢了,因为list是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈:
from collections import deque d = deque(['1', '2', '3']) print(d.pop()) print(d.popleft()) d.append('5') d.appendleft('6') print(d) 打印结果: 3 1deque(['6', '2', '5'])
从结果可以看出,它是一个双向队列。
3. defaultdict
from collections import defaultdict dict = defaultdict(lambda: None) print(dict) dict['key1'] = 'hhhh' print(dict['key2'])
key2 这个键值本来是不存在的呢,如果是普通的字典,就会报错,但是用了defaultdict就会返回一个默认值。
注意默认值是调用函数返回的,而函数在创建defaultdict对象时传入。
除了在Key不存在时返回默认值,defaultdict的其他行为跟dict是完全一样的。
4. OrderedDict
究其本意,有序字典。在普通字典中, 字典keys是没有顺序的,在对dict做迭代时,我们无法确定Key的顺序。如果要保持Key的顺序,可以用OrderedDict。所谓顺序是指key插入的顺序,也就是谁先插入谁就在前面。
from collections import OrderedDict dict = OrderedDict() dict['key1'] = 'a' dict['key2'] = 'b' print(dict) print(dict.keys()) 打印结果: OrderedDict([('key1', 'a'), ('key2', 'b')]) odict_keys(['key1', 'key2'])
5. Counter
Counter是一个简单的计数器,统计字符出现的个数:
from collections import Counter a = ['a', 'f', 'ffff', 'f'] print(Counter(a)) print(Counter(a)['f']) 打印结果: Counter({'f': 2, 'a': 1, 'ffff': 1}) 2
从打印的结果来看,Counter其实是一个字典类型,keys是统计的元素,values是出现的次数
本文由职坐标整理并发布,了解更多内容,请关注职坐标编程语言Python频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号