《流暢的python》學習筆記(三)

2021-10-04 18:34:01 字數 1186 閱讀 8375

字典是python的基石;除dict外,有其他好用的如defaultdict、orderedict、chainmap、counter(屬於collections模組);

字典提供了多種構造方法,比如:

a = dict(one=1, two=2, three=3)

b =

c = dict(zip([『one』,『two』, 『three』],[1,2,3]))

d = dict([(『one』,1), (『two』,2), (『three』,3)])

e = dict()

字典推導與列表推導,用法差不多,掌握起來也並不難

這部分提到了乙個鴨子型別,我理解鴨子型別是一種多型,又不完全是多型,後面講物件導向的時候應該還會講。鴨子型別簡單的說就是乙個物件的特徵不是由父類決定,而是通過物件的方法決定的。

如果後續章節沒有提到鴨子型別,學習完物件導向再把這個詳細描述清楚。

初入門是在使用dict給字典賦值時,有的時候會需要先去查一下key是否存在,文中用單詞歸類生成索引的來 舉例,字典的key是單詞,值為單詞在檔案中的行列號,是 元組組成的list,用 setdefault可以 省略去判斷的過程,減少時間複雜度

defaultdict 這個非常好理解,初始化類物件時會給乙個預設值,告訴構造器在key不存在時,建立乙個key並賦予預設值,這樣就不會被不存在的key困擾。

missing:是所有對映 型別在處理找不到的鍵的是否呼叫的方法。

set的本質是許多唯一物件的聚集,也就是說set元素不可重複

set內建了求交集、並集等函式,可以高效的進行查詢

set和frozenset:set是可變的,有add(),remove()等方法。frozenset是凍結的集合,它是不可變的,

集合的操作相對來說比較好理解

##dict和set的背後

通過乙個有效的實驗,驗證了dict、set、list的效率,在5個不同大小的haystack中搜尋1000個元素,haystack分別是dict、set、list,測試結果,set的效率最高,list的效率最低。

在這一節中詳細講解了dict的實現過程,並闡述了dict的優勢和限制

優勢:

字典在記憶體的開銷巨大

鍵查詢很快

鍵的次序取決於新增的順序

往字典裡新增新鍵可能會改變已有鍵的順序

上述優缺點對於集合也是適用的

學習《流暢的Python學習》 筆記02

1.2.2 字串表示形式 python 有乙個內建的函式叫 repr,它能把乙個物件用字串的形式表 達出來以便辨認,這就是 字串表示形式 repr 就是通過repr這個特殊方法來得到乙個物件的字串表示形式的。如果沒有實現repr,當我們在控制台裡列印乙個向量的例項時,得到的字串 可能會是 互動式控制...

學習《流暢的Python學習》 筆記03

2.8.1 用bisect來搜尋 import bisect import sys haystack 1 4,5 6,8 12,15 20,21 23,23 26,29 30 needles 0 1,2 5,8 10,22 23,29 30,31 row fmt defdemo bisect fn ...

《流暢的Python》讀書筆記(三)

country code my dict.setdefault key,使用 collections.defaultdict import collections index collections.defaultdict list index hunan changsha index defaul...