- Dict(字典)
- Set(集合)
- collections(內(nèi)置庫)
- functools(內(nèi)置庫)
Dict(字典)
字典視為一組無序的鍵值對,并要求鍵是唯一的(在一個字典中)骂束。一對大括號創(chuàng)建一個空字典:{}拜姿。在括號內(nèi)放置以逗號分隔的鍵值對列表,將初始鍵值對添加到字典中;這也是字典在輸出上的寫法节仿。
字典上的主要操作是使用某個鍵存儲值并提取給定鍵的值丧裁。也可以刪除帶有del的鍵值對。
字典對象的keys()方法以任意順序返回字典中使用的所有鍵的列表(如果要對其進(jìn)行排序巧号,只需對其應(yīng)用sorted()函數(shù).要檢查單個鍵是否在字典中族奢,請使用in關(guān)鍵字。
1.
屏幕快照 2019-03-29 下午2.20.20的副本 2.png
2.
屏幕快照 2019-03-29 下午2.42.38.png
3. 字典常用方法
屏幕快照 2019-03-29 下午8.00.26.png
屏幕快照 2019-03-29 下午8.00.26.png
4. items()和iteritems()區(qū)別:
字典的items()作用:是可以將字典中的所有項(xiàng)丹鸿,以列表方式返回越走。因?yàn)樽值涫菬o序的,所以用items方法返回字典的所有項(xiàng)靠欢,也是沒有順序的.
字典的iteritems()作用:與items方法相比作用大致相同弥姻,只是它的返回值不是列表,而是一個迭代器掺涛。
-
迭代器: 可以被next()函數(shù)調(diào)用并不斷返回下一個值的對象稱為迭代器:Iterator;
- list疼进、dict薪缆、str雖然是Iterable,卻不是Iterator。 為什么list拣帽、dict疼电、str等數(shù)據(jù)類型不是Iterator?這是因?yàn)镻ython的Iterator對象表示的是一個數(shù)據(jù)流减拭,Iterator對象可以被next()函數(shù)調(diào)用并不斷返回下一個數(shù)據(jù)蔽豺,直到?jīng)]有數(shù)據(jù)時拋出StopIteration錯誤∨》啵可以把這個數(shù)據(jù)流看做是一個有序序列修陡,但我們卻不能提前知道序列的長度,只能不斷通過next()函數(shù)實(shí)現(xiàn)按需計(jì)算下一個數(shù)據(jù)可霎,所以Iterator的計(jì)算是惰性的魄鸦,只有在需要返回下一個數(shù)據(jù)時它才會計(jì)算。
- Iterator甚至可以表示一個無限大的數(shù)據(jù)流癣朗,例如全體自然數(shù)拾因。而使用list是永遠(yuǎn)不可能存儲全體自然數(shù)的。*
-
總結(jié)
- iteritems()方法在需要迭代結(jié)果的時候使用最適合旷余,而且它的工作效率非常的高绢记。
- 在Python2.x中,iteritems() 用于返回本身字典列表操作后的迭代器【Returns an iterator on all items(key/value pairs) 】正卧,不占用額外的內(nèi)存蠢熄。
- 在Python 3.x 里面,iteritems()方法已經(jīng)廢除了穗酥。在3.x里用 items()替換iteritems() 护赊,可以用于 for 來循環(huán)遍歷。
Set(集合)
- 集合對象是一組無序排列的可哈希的值,集合成員可以做字段中的鍵,集合支持用in和 not in操作符檢查成員,有l(wèi)en()得到集合的大小,用for循環(huán)迭代集合的成員,記住:集合是無序的.
- 集合有兩種不同的類型, 可變集合(set)和不可變集合(frozenset)
1.
屏幕快照 2019-03-29 下午8.11.02.png
屏幕快照 2019-03-29 下午8.11.02.png
2.
屏幕快照 2019-03-29 下午8.12.57.png
3.
屏幕快照 2019-03-29 下午8.14.44.png
collections
- 該模塊實(shí)現(xiàn)了專門的容器數(shù)據(jù)類型砾跃,提供了Python的通用內(nèi)置容器骏啰,dict,list抽高,set和tuple的替代方法判耕。
-
collections內(nèi)置容器
屏幕快照 2019-03-29 下午8.42.40.png
1. namedtuple
- namedtuple是一個函數(shù),它用來創(chuàng)建一個自定義的tuple對象翘骂,并且規(guī)定了tuple元素的個數(shù)壁熄,并可以用屬性而不是索引來引用tuple的某個元素。這樣一來碳竟,我們用namedtuple可以很方便地定義一種數(shù)據(jù)類型草丧,它具備tuple的不變性,又可以根據(jù)屬性來引用莹桅,使用十分方便
-
例子
屏幕快照 2019-03-29 下午8.47.43.png
2.deque
- 使用list存儲數(shù)據(jù)時昌执,按索引訪問元素很快,但是插入和刪除元素就很慢了,因?yàn)閘ist是線性存儲懂拾,數(shù)據(jù)量大的時候煤禽,插入和刪除效率很低。deque是為了高效實(shí)現(xiàn)插入和刪除操作的雙向列表岖赋,適合用于隊(duì)列和棧;
- deque除了實(shí)現(xiàn)list的append()和pop()外檬果,還支持appendleft()和popleft(),這樣就可以非常高效地往頭部添加或刪除元素唐断。
-
例子
屏幕快照 2019-03-29 下午8.47.43.png
3.defaultdict
- 返回一個新的類字典對象选脊。 defaultdict是內(nèi)置dict類的子類。它會覆蓋一個方法并添加一個可寫實(shí)例變量.其余功能與dict類相同
屏幕快照 2019-03-29 下午9.52.58.png
屏幕快照 2019-03-29 下午9.59.02.png
屏幕快照 2019-03-29 下午10.01.30.png
4.OrderedDict
-
有序詞典就像常規(guī)詞典一樣栗涂,但它們記住了項(xiàng)目的插入順序知牌。迭代有序字典時,將按照首次添加鍵的順序返回項(xiàng)目斤程。
屏幕快照 2019-03-29 下午10.12.40.png
functools
- functools模塊用于高階函數(shù):作用于或返回其他函數(shù)的函數(shù)角寸。通常,任何可調(diào)用對象都可以被視為用于此模塊的功能忿墅。
1. wraps
- Python裝飾器(decorator)在實(shí)現(xiàn)的時候扁藕,被裝飾后的函數(shù)其實(shí)已經(jīng)是另外一個函數(shù)了(函數(shù)名等函數(shù)屬性會發(fā)生改變),為了不影響疚脐,Python的functools包中提供了一個叫wraps的decorator來消除這樣的副作用亿柑。寫一個decorator的時候,最好在實(shí)現(xiàn)之前加上functools的wrap棍弄,它能保留原有函數(shù)的名稱和docstring望薄。
屏幕快照 2019-04-11 下午2.12.59.png
屏幕快照 2019-04-11 下午2.13.28.png
屏幕快照 2019-04-11 下午2.14.17.png
屏幕快照 2019-04-15 下午2.03.12.png