亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python 內(nèi)置模塊之 collections 的使用

系統(tǒng) 1732 0

python 有很多的內(nèi)置模塊,collections是比較常用的一個,collections實現(xiàn)了專門的容器數(shù)據(jù)類型,為python的內(nèi)置容器提供了替代方案。(這句話是我根據(jù)官方文檔理解翻譯的。原文:This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple.)我理解為在python常用的數(shù)據(jù)類型基礎(chǔ)上,提供了更高級的數(shù)據(jù)類型用法
collections中常用的類型有以下幾種(除了我介紹的還有其他的用法,有興趣的可以去官方文檔看一下,地址:https://docs.python.org/3/library/collections.html):
(1) namedtuple(): 可以創(chuàng)建一個類對象
(2) deque: 雙端隊列,可以在兩端操作
(3) counter: dict 的子類,具有統(tǒng)計功能
(4) OrderedDict: 有序字典
(5) defaultdict: dict的擴展子類,擁有dict的所有功能,還能在調(diào)用不存在的鍵時創(chuàng)建一個默認(rèn)值
其中最常用的是namedtuple() 和 defaultdict

一、namedtuple
1. namedtuple 繼承自tuple ,可以用來創(chuàng)建一個類對象
用法如下圖:
python 內(nèi)置模塊之 collections 的使用_第1張圖片
2. 為什么會用到這種方法來定義類,而不用常用的class 方法:
(1) 代碼簡潔
(2) 節(jié)省空間,少了用class 定義類的很多變量  (3) python解釋器在解釋class 類的時候會創(chuàng)建很多變量,使用namedtuple會省很多的中間變量,節(jié)省內(nèi)存,提高效率,尤其是在數(shù)據(jù)分析的時候用處很大
3. namedtuple繼承了tuple,所以也有拆包的功能,在創(chuàng)建類傳參時可以使用,用法如下:
在這里插入圖片描述
在這里插入圖片描述
4. 除了從tuple繼承的方法外,namedtuple還提供了3個方法和1個屬性,為了避免沖突,使用下劃線開頭。
(1) _make(iterable): 創(chuàng)建新的實例方法,參數(shù)必須是可迭代的
python 內(nèi)置模塊之 collections 的使用_第2張圖片
這里的user_tuple直接使用前面的
(2) _asdict(): 返回一個OrderdDict
OrderdDict會在后面提到
(3) _replace(**kwargs): 會返回一個新的namedtuple 實例,并將指定字段的值替換,也就是修改字段值,但是不會修改原實例,會返回一個新實例。
python 內(nèi)置模塊之 collections 的使用_第3張圖片
(4) _fields: 返回所有字段,返回結(jié)果是tuple
python 內(nèi)置模塊之 collections 的使用_第4張圖片
二、deque 雙端隊列
1. 用法跟list 類似,比list 多了左側(cè)操作的方法
python 內(nèi)置模塊之 collections 的使用_第5張圖片
2. 相關(guān)操作
(1) appendleft()
python 內(nèi)置模塊之 collections 的使用_第6張圖片
(2) clear()
(3) conut()
(4) copy()
(5) extend()
extendleft()
python 內(nèi)置模塊之 collections 的使用_第7張圖片
(6) index()
(7) pop()
popleft()
(8) remove()
(9) reverse()
python 內(nèi)置模塊之 collections 的使用_第8張圖片
要注意,reversed是有返回值的,并不改變原值
(10) rotate():將元素向左或右移動,參數(shù)為1右移,-1 左移,默認(rèn)為1
python 內(nèi)置模塊之 collections 的使用_第9張圖片
(11) maxlen: deque的最大尺寸,如果返回None,表示沒有限制
這些用法跟list是一樣的,我就不演示了。
三、defaultdict
沒用defaultdict之前,如果我們要統(tǒng)計一個列表中每個元素出現(xiàn)的次數(shù),會怎么做呢?
一般我們都會想到下面這種方法:
python 內(nèi)置模塊之 collections 的使用_第10張圖片
如果對字典的用法了解的更深入的話,會想到下面這種方法:
python 內(nèi)置模塊之 collections 的使用_第11張圖片
這種方法相比第一種而言,不僅代碼行數(shù)少,而且速度更快,更高效
在我們了解了defaultdict 之后,有一種更簡單高效的用法:
python 內(nèi)置模塊之 collections 的使用_第12張圖片
python 內(nèi)置模塊之 collections 的使用_第13張圖片
這里參數(shù)還可以參數(shù)函數(shù),用法如下:
python 內(nèi)置模塊之 collections 的使用_第14張圖片
四、OrderedDict
python2 下,dict 無序的
OrderdDcit 有序
python3 下,都有序
這里的有序指的是添加順序
用法有以下幾種:
(1) 刪除,popitem() 移除并返回一個鍵值對(key, value),參數(shù)為last, 不傳參時刪除最后一個,傳參 last = True刪除第一個, last = False,刪除最后一個,默認(rèn)為False
python 內(nèi)置模塊之 collections 的使用_第15張圖片
(2) move_to_end(key, last=True)
last 為 True 時,元素移到末尾,為 False 時,移到首位,默認(rèn)為True
當(dāng) key 不存在時,會報 KeyError錯誤
python 內(nèi)置模塊之 collections 的使用_第16張圖片
五、Counter
Counter 是dict的子類,用于計數(shù)可哈希對象
可以理解為就是一個計數(shù)功能。
用法如下:
(1)
python 內(nèi)置模塊之 collections 的使用_第17張圖片
(2) 如果元素不存在,不會報KeyError的錯誤,會返回一個0值
在這里插入圖片描述
(3) 如果你想把Counter中的對象移除,要用del 實現(xiàn)
如下,但是b中元素并不會受到影響
python 內(nèi)置模塊之 collections 的使用_第18張圖片
(4) elements
在元素上返回一個迭代器,重復(fù)次數(shù)跟計數(shù)相同,如果計數(shù)小于等于0會忽略,按任意順序返回
python 內(nèi)置模塊之 collections 的使用_第19張圖片
(5) most_common([n])
返回數(shù)量最多的前n個元素的列表,如果沒有傳入n,會默認(rèn)返回所有元素
python 內(nèi)置模塊之 collections 的使用_第20張圖片
(6) substract
從一個Counter中減去另一個Counter
python 內(nèi)置模塊之 collections 的使用_第21張圖片
Counter和defaultdict都有統(tǒng)計計數(shù)的功能,但時兩者有什么區(qū)別,我還沒有了解透徹,有明白的大佬,歡迎補充。
以上筆記是我根據(jù)官方文檔和慕課網(wǎng)的一個視頻教程整理出來的,如果有興趣的也可以自己去慕課網(wǎng)上看一下。

因為只是學(xué)習(xí)了一下collections模塊,并沒有在實際工作中使用,如果有錯誤的地方,還請指正,共同進步,謝謝!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久99精品久久久久久三级 | 美女黄色一级毛片 | 最新男同志freevideos | 亚洲欧美高清 | 亚洲国产系列久久精品99人人 | 亚洲精品国产自在久久出水 | 亚洲天天做日日摸天天做 | 91天堂97年嫩模在线观看 | 国产精品线在线精品国语 | 伊人精品在线观看 | 热re66久久精品国产99re | 成年女人视频免费观看一 | 亚洲综合无码一区二区 | 欧美色xxx | 欧美日产| 亚洲综合站 | 亚洲一二区 | 四虎影视免费永久在线观看黄 | 精品久久久中文字幕一区 | 久久综合亚洲一区二区三区 | 久青草国产免费观看 | 神马影院不卡不卡在线观看 | 亚洲国产成人久久综合野外 | 99re热视频在线 | 色偷偷女人的天堂a在线 | 奇米狠狠色| 在线视频久久 | 羞羞视频免费网站在线 | 欧美成人免费在线视频 | 成年毛片 | 国产日 | 免费费看的欧亚很色大片 | 国产午夜精品尤物福利视频 | 狠狠综合欧美综合欧美色 | 亚洲丶国产丶欧美一区二区三区 | 在线欧美日韩国产 | 美利坚永久精品视频在线观看 | 亚洲在线视频观看 | 欧美一区永久视频免费观看 | 日韩永久免费进入2015 | 九色精品视频在线观看 |