Python内置数据结构和算法 及 collections模块常用结构用法

1.Python常用内置算法和数据结构

      语言内置数据结构5个,分别是 list / tuple / dict / set / frozenset  ( /'frəʊznset/ )

Python内置数据结构和算法 及 collections模块常用结构用法_第1张图片

 2.collections模块提供的数据结构扩展Python内置数据结构和算法 及 collections模块常用结构用法_第2张图片

3.collections模块常用数据结构用法

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

 ① namedtuple是一个具名元组,它用来创建一个自定义的 tuple 对象,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素。

>>> import collections
>>> Point = collections.namedtuple('Point', 'x,y') # 定义一个tuple对象
>>> p = Point(1, 2) # 给x赋值1,y赋值2
>>> p.x
1
>>> p.y
2
>>> p[0]
1
>>> p[1]
2
>>> p.x == p[0]
True

  namedtuple作用:通过下标不太可读通过属性名称变得比较可读。namedtuple让tuple属性可读

② deque /dek/ 是为了高效实现插入和删除操作的双向列表,非常高效向左右两边append和pop值,deque可以方便实现 queue (队列 ) / stack (栈)。

>>> import collections
>>> de = collections.deque()  # 定义deque对象
>>> de.append(1)    # 右边添加1元素
>>> de.appendleft(0)  # 左边添加0元素
>>> de
deque([0, 1])
>>> de.pop()  # 输出右边元素
1
>>> de.popleft()  # 输出左边元素
0

③Counter 字典的一个子类,值是一个字典。需要计数器的地方使用,统计字符个数

>>> import collections
>>> c = collections.Counter()   # 定义Counter对象
>>> c = collections.Counter('abcab') # 统计字符数目
>>> c
Counter({'a': 2, 'b': 2, 'c': 1})   # 值是一个字典,a是有2个,b是有2个,c是有1个
>>> c['a']  # 非常方便统计字符串每个字符个数
2
>>> c.most_common() # 获取从大到小每个字符数量
[('a', 2), ('b', 2), ('c', 1)]
>>>

④OrderedDict 字典的一个子类,能记住key第一次插入的顺序。OrderedDict 的 key 顺序是第一次插入的顺序。

>>> import collections
>>> od = collections.OrderedDict()
>>> od['c'] = 'c'
>>> od['a'] = 'a'
>>> od['b'] = 'b'
>>> list(od.keys())
['c', 'a', 'b']   # key的顺序

⑤defaultdict 字典的一个子类,希望key不存在时,返回一个默认值带有默认值的字典

>>> import collections
>>> dd = collections.defaultdict(int) # 第一个参数必须是可调用的,否则为None
>>> dd['a']
0
>>> dd['b'] += 1
>>> dd
defaultdict(, {'a': 0, 'b': 1})

 

 

 

 

 

你可能感兴趣的:(Python语言,数据结构和算法)