076 collections模块

conllections模块

  • conllecctions是python内建的一个集合模块,提供了许多有用的集合类

1.有名元组

  • tuple是元组,它是能够表示一个不变的集合好比一个坐标的点就能够表示成:python

    p = (1,2)
  • 实际上咱们经过一个这样的元组很难想象它是已个坐标轴app

  • numedtuple有名元组表示函数

    from collections import namedtuple
    Point = namedtuple('Point', ['x', 'y'])
    p = Point(1, 2)
    p.x # 1
    p.y # 2

2.nametuple有名元组的做用

  • namedtuple是一个函数,它用来建立一个自定义的tuple对象,而且规定了tuple元素的个数,并能够用属性而不是索引来引用tuple的某个元素。学习

  • 这样一来,咱们用namedtuple能够很方便地定义一种数据类型,它具有tuple的不变性,又能够根据属性来引用,使用十分方便。code

    # 默认字典
    from collections import defaultdict
    # 用匿名函数来给他一个默认值
    dic = defaultdict(lambda :'nan')  # dic = {}  # 若是找不到赋了一个默认值
    dic['a'] = 1
    print(dic['a'])
    print(dic['c'])

3.deque

  • 使用list存储数据时,按索引访问元素很快,可是插入和删除元素就很慢了,由于list是线性存储,数据量大的时候,插入和删除效率很低。对象

  • deque是为了高效实现插入和删除操做的双向列表,适合用于队列和栈:索引

    • list追加值-->线性表队列

      lis = [1,2,3]  # 线性表
      lis.append(4)
      print(lis)
      # [1,2,3,4]
    • 用deque实现向表的两端都追加元素,这就是双端列表的特性io

      • de.append() 在链表的后面追加元素,这个和列表追加是同样的
      • de.appendleft()在链表的开头追加元素,这个是用列表很难实现的
      • de.popleft()从链表的开头删除元素
      from collections import deque  # 链表
      
      de = deque([1,2,3])
      de.append(4)
      print(de)
      de.appendleft(0)
      print(de)
      de.popleft()
      de.popleft()
      print(de)

4.计数器Counter

  • 是一个简单的计数器,例如,统计字符出现的个数:class

  • 咱们以前学习数据类型的时候,计数都是用字典来实现的

    from collections import Counter
    s= 'programming'
    
    c = Counter()  # 字典
    for i in s:
        c[i] +=1
    print(c)
    
    # Counter({'r': 2, 'g': 2, 'm': 2, 'p': 1, 'o': 1, 'a': 1, 'i': 1, 'n': 1})
相关文章
相关标签/搜索