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})
相關文章
相關標籤/搜索