python collection模块,python3 collections模块

  python collection模块,python3 collections模块

  本文介绍了Python中的collections集合和类型化数据类型模块,通过示例代码详细介绍了该模块。对大家的学习或者工作都有一定的参考价值,有需要的朋友可以参考一下。

  00-1010 1.collections集合1,namedtuple:命名元组对象2,deque: deque 3,defaultdict:默认字典4,OrderedDict:序列字典5,Counter: Counter 2,typing模块1,typing模块函数2,typing模块4,typing常用类型

  

目录

 

  Collections是Python内置的一个集合模块,它提供了许多有用的集合类。

  

一、collections集合

 

  Namedtuple是一个用于创建自定义元组对象的函数。它还指定了元组元素的数量,并且可以通过属性而不是索引来引用元组的一个元素。

  namedtuple(名称, [属性list])

  这样,我们就可以很容易地用namedtuple定义一个数据类型,它具有元组的不变性,可以根据属性引用,使用起来非常方便。

  我们知道元组可以表示一个不变集。例如,一个点的二维坐标可以表示为:

  p=(1,2)

  但是,看到(1,2),很难看出这个元组是用来表示一个坐标的。

  定义一个阶层又是小题大做。这时,namedtuple就派上用场了:

  从集合导入命名元组

  Point=namedtuple(Point ,[x , y])

  p=点(1,2)

  p.x # 1

  第2页

  您可以验证创建的点对象是元组的子类:

  isinstance(p,Point) #True

  isinstance(p,tuple) #True

  同样,如果要用坐标和半径来表示圆,也可以用namedtuple来定义它:

  Circle=namedtuple(Circle ,[x , y , r])

  

1、namedtuple:命名tuple对象

 

  使用list存储数据时,按索引访问元素速度快,插入和删除元素速度慢。由于list是线性存储,在数据量较大的情况下,插入和删除的效率很低。

  Deque是一个高效插入和删除的双向列表,适用于队列和堆栈:

  Deque不仅实现了list的append()和pop(),还支持appendleft()和popleft(),可以非常高效地在头中添加或删除元素。

  从集合导入队列

  q=deque([a , b , c])

  q.append(x )

  q.appendleft(y )

  q

  #deque([y , a , b , c , x])

  

2、deque:双端队列

 

  使用dict时,如果引用的键不存在,就会抛出一个KeyError。如果想在键不存在时返回默认值,可以使用defaultdict。

  请注意,默认值是由调用函数返回的,并且该函数是在创建defaultdict对象时传入的。

  除了键不存在时返回默认值,defaultdict的其他行为和dict完全一样。

  从集合导入默认字典

  dd=defaultdict(lambda: 不适用)

  dd[key1]=abc

  Dd[key1] # key1存在

  #abc

  Dd[key2] # key2不存在,返回默认值。

  # 不适用

  >

  

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、Counter:计数器

 

  Counter是一个简单的计数器.

  Counter实际上也是dict的一个子类,下面的结果可以看出,字符'g'、'm'、'r'各出现了两次,其他字符各出现了一次。

  例如,统计字符出现的个数:

  

from collections import Counter

 

  

 

  

二、typing模块

 

  

 

  

1、typing模块的作用

 

  

  • 类型检查,防止运行时出现参数和返回值类型不符合。

  • 作为开发文档附加说明,方便使用者调用时传入和返回参数类型。

  • 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒。

 

  

  • 注意:typing模块只有在python3.5以上的版本中才可以使用,pycharm目前支持typing检查。

 

  

 

  

2、使用typing模块

 

  

  • 在传入参数时通过"参数名:类型"的形式声明参数的类型;

  • 返回结果通过"-> 结果类型"的形式声明结果的类型。

 

  在调用的时候如果参数的类型不正确pycharm会有提醒,但不会影响程序的运行。

  

from typing import List, Tuple, Dict

 

  对于如list列表等,还可以规定得更加具体一些。如:"-> List[str],规定返回的是列表,并且元素是字符串。

  

from typing import List

 

  

 

  

4、typing常用类型

 

  

  • int、long、float: 整型、长整形、浮点型

  • bool、str: 布尔型、字符串类型

  • List、 Tuple、 Dict、 Set:列表、元组、字典、集合

  • Iterable、Iterator:可迭代类型、迭代器类型

  • Generator:生成器类型

 

  到此这篇关于Python集合collections、数据类型typing模块的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

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