python collection模块,python中的collections
python内置模块collections介绍
Collections是Python内置的一个集合模块,它提供了许多有用的集合类。
1、namedtuple
Python提供了很多非常容易使用的基本类型,比如不可变类型tuple,我们可以很容易地用它来表示一个二进制向量。
推荐:Python视频教程
V=(2,3)我们发现,虽然(2,3)表示一个向量的两个坐标,但是如果不做额外的解释,很难直接看出这个元组是用来表示一个坐标的。
为此定义一个类又是小题大做了。这时,namedtuple就派上了用场。
从集合导入命名元组
Vector=namedtuple(Vector ,[x , y])
v=向量(2,3)
五. x
2
v.y
3namedtuple是一个函数,用来创建自定义的tuple对象,指定元组元素的个数,可以通过属性而不是索引来引用tuple的一个元素。
这样,我们就可以很容易地用namedtuple定义一个数据类型,它具有元组的不变性,可以根据属性引用,使用起来非常方便。
我们可以验证创建的矢量对象的类型。
类型(v)
类“__main__”。“矢量”
isinstance(v,向量)
真实的
isinstance(v,tuple)
同样,如果要用坐标和半径来表示圆,也可以用namedtuple来定义它:
Circle=namedtuple(Circle ,[x , y , r])
# namedtuple(名称,[属性列表])2、deque
在数据结构中,我们知道队列和堆栈是两种非常重要的数据类型,一种是FIFO,一种是LIFO。在python中,使用list存储数据时,按索引访问元素的速度很快,但插入和删除元素的速度很慢。因为list是线性存储,在数据量很大的情况下,插入和删除的效率很低。
Deque是一种双向链表结构,用于高效的插入和删除,非常适合队列和堆栈等数据结构。
从集合导入队列
deq=deque([1,2,3])
deq.append(4)
抑郁症体验问卷
德克([1,2,3,4])
deq.appendleft(5)
抑郁症体验问卷
德克([5,1,2,3,4])
deq.pop()
四
deq.popleft()
五
抑郁症体验问卷
dequee([1,2,3])dequee不仅实现了list的append()和pop(),还支持appendleft()和popleft(),这样你就可以非常高效地在头中添加或删除元素。
3、defaultdict
使用dict字典类型时,如果引用的键不存在,就会抛出一个KeyError。如果想在键不存在时返回默认值,可以使用defaultdict。
从集合导入默认字典
DD=default dict(lambda : default value )
dd[key1]=a
dd[key1]
一个
Dd[key2] # key2未定义,返回默认值。
9;defaultvalue'注意默认值是调用函数返回的,而函数在创建defaultdict对象时传入。
除了在Key不存在时返回默认值,defaultdict的其他行为跟dict是完全一样的。
4、OrderedDict
使用dict时,key是无序的。在对dict做迭代时,我们无法确定key的顺序。
但是如果想要保持key的顺序,可以用OrderedDict。
>>> from collections import OrderedDict
注意,OrderedDict的key会按照插入的顺序排列,不是key本身排序
>>> od = OrderedDict()
OrderedDict可以实现一个FIFO(先进先出)的dict,当容量超出限制时,先删除最早添加的key。
from collections import OrderedDict
5、ChainMap
ChainMap可以把一组dict串起来并组成一个逻辑上的dict。ChainMap本身也是一个dict,但是查找的时候,会按照顺序在内部的dict依次查找。
什么时候使用ChainMap最合适?举个例子:应用程序往往都需要传入参数,参数可以通过命令行传入,可以通过环境变量传入,还可以有默认参数。我们可以用ChainMap实现参数的优先级查找,即先查命令行参数,如果没有传入,再查环境变量,如果没有,就使用默认参数。
下面的代码演示了如何查找user和color这两个参数。
from collections import ChainMap
没有任何参数时,打印出默认参数:
$ python3 use_chainmap.py
当传入命令行参数时,优先使用命令行参数:
$ python3 use_chainmap.py -u bob
同时传入命令行参数和环境变量,命令行参数的优先级较高:
$ user=admin color=green python3 use_chainmap.py -u bob
6、Counter
Counter是一个简单的计数器,例如,统计字符出现的个数:
from collections import Counter
Counter实际上也是dict的一个子类。
7、小结
collections模块提供了一些有用的集合类,可以根据需要选用。以上就是python内置模块collections介绍的详细内容,更多请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。