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匯入的才是...