摘要:先來看一下模塊中的方法本章我們只介紹除以外的方法,至于這三個(gè)方法,我們用于繼承他們,而實(shí)現(xiàn)你想要的結(jié)構(gòu)。
先來看一下collections模塊中的方法:
__all__ = ["deque", "defaultdict", "namedtuple", "UserDict", "UserList", "UserString", "Counter", "OrderedDict", "ChainMap"]
本章我們只介紹除UserDict/UserList/UserString以外的方法,至于這三個(gè)方法,我們用于繼承他們,而實(shí)現(xiàn)你想要的結(jié)構(gòu)。
namedtuple:用于創(chuàng)建具有命名字段的tuple子類的工廠函數(shù)
#比如我們想構(gòu)造一個(gè)紙牌類 Card=namedtuple("Card",[rank,suit]) #等同于namedtuple("Card",(rank,suit)) c1=Card("A","紅桃") c2=Card("K","黑桃") print(c1.rank) #A print(c1.suit) #紅桃 print(c1.rank) #B print(c1.suit) #黑桃 #改變對(duì)象的屬性,可以使用 對(duì)象._replace(屬性=值)方法更改已創(chuàng)建的對(duì)象的值 #_replace可以傳入一個(gè)dict
deque:list-like容器,兩端都有快速追加和彈出類,用于創(chuàng)建多個(gè)映射的單個(gè)視圖(線程安全)
#其內(nèi)部是一個(gè)單字母數(shù)組 a=deque("str") a.appendleft("a") #在頭部插入數(shù)據(jù) a.append("b") #在尾部插入數(shù)據(jù) a.count("a") #查看字符出現(xiàn)的次數(shù) a.insert(2,"y") #根據(jù)索引插入值 a.clear() #清空雙端隊(duì)列
defaultdict:多值字典
dict1=defaultdict(list/dict/set/lambda :"None") dict1["a"].add(1) #以set為例 print(dict1) #defaultdict(, {"a": {1}}) print(dict1["b"]) #None,這就是lambda的作用
OrderedDict:保持元素被插入的順序,結(jié)構(gòu)是一個(gè)雙向鏈表
#python3下dict默認(rèn)也是有序的,但是方法有限 od=OrderedDict([("name","jim"),("age",19),("sex","男")]) od.setdefault("high",178) #添加一組數(shù)據(jù),或者使用od["high"]=178 od.move_to_end("name") #將name組放置末尾 for i in od.items(): print(i) #("name", "jim") #("age", 19) #("sex", "男") #("high", 178)
Counter:計(jì)數(shù)器,在底層中為一個(gè)字典
c=Counter() #可以直接Counter("測(cè)shishiyong"),這樣就不用循環(huán) for i in "測(cè)shishiyong": c[i]=c[i]+1 print(c) #Counter({"s": 2, "h": 2, "i": 2, "測(cè)": 1, "y": 1, "o": 1, "n": 1, "g": 1}) print(c.most_common(3)) #出現(xiàn)次數(shù)最多的三個(gè)元素 #[("s", 2), ("h", 2), ("i", 2)] #c["元素"] 查看元素的出現(xiàn)次數(shù) #c.update(list/str) 可以增加元素 #Counter可以使用+/-進(jìn)行運(yùn)算
ChainMap:合并多個(gè)字典
dict1={"name":"jim","age":21} dict2={"high":175,"gender":"男"} new_dict=ChainMap(dict1,dict2) print(new_dict) #ChainMap({"name": "jim", "age": 21}, {"high": 175, "gender": "男"}) #前dict中存在的鍵值對(duì)將會(huì)使后面dict中的鍵值對(duì)不會(huì)被重新合并,也可以使用update()方法對(duì) #原字典更新新字典到里面,不過和直接合并的區(qū)別是,update會(huì)重新創(chuàng)建新字典,原字典更新刪除 #數(shù)據(jù)不會(huì)影響新字典
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/42807.html
摘要:掛機(jī)科了次使用這個(gè)結(jié)構(gòu),匿名函數(shù)就有了自己的執(zhí)行環(huán)境或閉包,然后我們立即執(zhí)行。注意,匿名函數(shù)的圓括號(hào)是必需的,因?yàn)橐躁P(guān)鍵字開頭的語句通常被認(rèn)為是函數(shù)聲明請(qǐng)記住,中不能使用未命名的函數(shù)聲明。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 20 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過了前面的章節(jié),可以在這里找到它們: ...
摘要:它通過數(shù)據(jù)模型進(jìn)行鍵值綁定及事件處理,通過模型集合器提供一套豐富的用于枚舉功能,通過視圖來進(jìn)行事件處理及與現(xiàn)有的通過接口進(jìn)行交互。 本人兼職前端付費(fèi)技術(shù)顧問,如需幫助請(qǐng)加本人微信hawx1993或QQ345823102,非誠(chéng)勿擾 1.為初學(xué)前端而不知道怎么做項(xiàng)目的你指導(dǎo) 2.指導(dǎo)并扎實(shí)你的JavaScript基礎(chǔ) 3.幫你準(zhǔn)備面試并提供相關(guān)指導(dǎo)性意見 4.為你的前端之路提供極具建設(shè)性的...
摘要:一種解決問題的通用方法,我們叫做模式。事件委托當(dāng)這個(gè)視圖后,頁(yè)面上的就會(huì)綁定事件,只要點(diǎn)擊,就會(huì)執(zhí)行方法。同時(shí),頁(yè)面上的元素也會(huì)綁定事件。,套入模板后變成,最后添加到頁(yè)面上。 Backbone是一個(gè)實(shí)現(xiàn)了web前端mvc模式的js框架。 一種解決問題的通用方法,我們叫做模式。 設(shè)計(jì)模式:工廠模式,適配器模式,觀察者模式等,推薦js設(shè)計(jì)模式這本書。設(shè)計(jì)模式是一種思想。 框架模式:MVC,...
摘要:這里提示一下,有些函數(shù)對(duì)隊(duì)列進(jìn)行操作,但返回值是,比如反轉(zhuǎn)隊(duì)列,將隊(duì)列中元素向右移位,尾部的元素移到頭部。比如字典中的鍵映射多個(gè)值輸出結(jié)果如下三用途創(chuàng)建命名字段的元組。四用途統(tǒng)計(jì)可哈希的對(duì)象。 本文將詳細(xì)講解collections模塊中的所有類,和每個(gè)類中的方法,從源碼和性能的角度剖析。 一個(gè)模塊主要用來干嘛,有哪些類可以使用,看__init__.py就知道 This module i...
閱讀 690·2021-11-25 09:43
閱讀 2959·2021-11-24 10:20
閱讀 1014·2021-10-27 14:18
閱讀 1086·2021-09-08 09:36
閱讀 3392·2021-07-29 14:49
閱讀 1791·2019-08-30 14:07
閱讀 2945·2019-08-29 16:52
閱讀 3055·2019-08-29 13:12