Python基礎:collections模塊

collections是Python內建的一個集合模塊,提供了許多有用的集合類。

 

1.Counter 計數器

Counter是一個簡單的計數器,例如,統計字符出現的個數:

 

>>> import collections

>>> obj = collections.Counter('applebanana')

>>> print(obj)

Counter({'a': 4, 'n': 2, 'p': 2, 'e': 1, 'l': 1, 'b': 1})

 

2.OrderedDict 有序字典

    使用dict時,Key是無序的。在對dict做迭代時,我們無法確定Key的順序。

如果要保持Key的順序,可以用OrderedDict:

>>> od = collections.OrderedDict()

>>> od['k2'] ='k2'

>>> od['k1'] = 'k1'

>>> od

OrderedDict([('k2', 'k2'), ('k1', 'k1')])

>>> od = collections.OrderedDict([('k2','v2'),('k1','v1')])

>>> od

OrderedDict([('k2', 'v2'), ('k1', 'v1')])

 

3.defaultdict 默認字典

默認字典會給字典的值設置一個默認類型

import collections

num = [11,22,33,44,55,66,77,88,99]

 

#my_dic字典的值添加默認list類型

my_dic = collections.defaultdict(list)

 

for i in num:

    if i > 66:

        my_dic['k1'].append(i)

    else:

        my_dic['k2'].append(i)

print(my_dic)

 

4.namedtuple 可命名元祖

    namedtuple是一個函數,它用來創建一個自定義的tuple對象,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素。

這樣一來,我們用namedtuple可以很方便地定義一種數據類型,它具備tuple的不變性,又可以根據屬性來引用,使用十分方便

 

>>>person = collections.namedtuple('pp',['name','age'])

>>>p = person('apple',2)

>>>print(p.name)

>>>print(p.age)

 

5.deque 雙向隊列

    使用list存儲數據時,按索引訪問元素很快,但是插入和刪除元素就很慢了,因爲list是線性存儲,數據量大的時候,插入和刪除效率很低。

deque是爲了高效實現插入和刪除操作的雙向列表,適合用於隊列和棧:

>>> dli = collections.deque([1,2,3])

>>> dli.append(4)

>>> dli

deque([1, 2, 3, 4])

>>> dli.appendleft(5) #appendleft向左插入數據

>>> dli

deque([5, 1, 2, 3, 4])

 

 

6.queue 單項隊列 (queue模塊中)

 

import queue

q = queue.Queue()

q.put(123)

q.put(456)

print(q.qsize())

print(q.get())

#q.get()會將單項隊列裏面的數據依次取出來

print(q.get())

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章