python collection模块,python中的collections

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: