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
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'])
使用list存儲數據時,按索引訪問元素很快,可是插入和刪除元素就很慢了,由於list是線性存儲,數據量大的時候,插入和刪除效率很低。對象
deque是爲了高效實現插入和刪除操做的雙向列表,適合用於隊列和棧:索引
list追加值-->線性表隊列
lis = [1,2,3] # 線性表 lis.append(4) print(lis) # [1,2,3,4]
用deque實現向表的兩端都追加元素,這就是雙端列表的特性io
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)
是一個簡單的計數器,例如,統計字符出現的個數: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})