Python常用內建模組之collections

2021-08-13 17:04:04 字數 2952 閱讀 1564

collections是python內建的乙個集合模組,提供了許多有用的集合類。

1.namedtuple

namedtuple是乙個函式,它用來建立乙個自定義的tuple物件,並且規定了tuple元素的個數,並可以用屬性而不是索引來引用tuple的某個元素。這樣一來,我們用namedtuple可以很方便地定義一種資料型別,它具備tuple的不變性,又可以根據屬性來引用,使用十分方便。

from collections import namedtuple

p0 = namedtuple('p0',['x','y'])

p = p0(3,4)

print("x座標:",p.x)

print("y座標:",p.y)

執行結果:

"c:\program files\python36\python.exe"

c:/users/administrator/pycharmprojects/python全網練習/常用內建模組.py

x座標:

3y座標:

4process finished with exit code 0

同樣的,我們可以來驗證一下建立的p物件是tuple的一種子類:

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

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

from collections import deque

q = deque(['a','b','c'])

print(q)

print(q)

q.popleft()

print(q)

q.pop()

print(q)

執行結果:

"c:\program files\python36\python.exe"

c:/users/administrator/pycharmprojects/python全網練習/常用內建模組.py

deque(['a', 'b', 'c', 'x'])

deque(['y', 'a', 'b', 'c', 'x'])

deque(['a', 'b', 'c', 'x'])

deque(['a', 'b', 'c'])

process finished with exit code 0

3.defaultdict

使用dict時,如果引用的key不存在,就會丟擲keyerror。如果希望key不存在時,返回乙個預設值,就可以用defaultdict:

from collections import defaultdict

dd = defaultdict(lambda : 'error')

dd['key1'] = 'abc'

print(dd['key1'])

print(dd['key2'])

執行結果:

"c:\program files\python36\python.exe"

c:/users/administrator/pycharmprojects/python全網練習/常用內建模組.py

abcerror

process finished with exit code 0

4.ordereddict

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

如果要保持key的順序,可以用ordereddict:

from collections import ordereddict

d = dict([('a',1),('b',2),('c',3)])

print(d)

od = ordereddict([('a',1),('b',2),('c',3)])

print(od)

執行結果:

"c:\program files\python36\python.exe"

c:/users/administrator/pycharmprojects/python全網練習/常用內建模組.py

ordereddict([('a', 1), ('b', 2), ('c', 3)])

process finished with exit code 0

注意,ordereddict的key會按照插入的順序排列,不是key本身排序

5.counter

counter是乙個簡單的計數器,例如,統計字元出現的個數:

from  collections import counter

c = counter()

for ch in

'huangxin':

c[ch] = c[ch] + 1

print(c)

執行結果:

"c:\program files\python36\python.exe"

c:/users/administrator/pycharmprojects/python全網練習/常用內建模組.py

counter()

process finished with exit code 0

Python常用內建模組之contextlib

任何物件,只要正確實現了上下文管理,就可以用於with語句。實現上下文管理是通過enter和exit這兩個方法實現的。例如,下面的class實現了這兩個方法 class query object def init self,name self.name name def enter self pri...

Python常用內建模組之json

json資料就是遵循一種格式的文字資料,用來使 標準化,前後端互動最好的資料格式之一。json資料就是個字串,可以表示python中的資料,比如可以把dict,list等資料統統轉化成json字串,方便交流。json模組四種常用方式 帶s的 json.loads 把json字串轉化為python資料...

python 常用內建模組之datetime

from datetime import datetime now datetime.now print now out 2019 02 06 15 08 10.618082datetime模組裡還包含了乙個datetime類,通過from datetime import datetime匯入的才是...