python基本數(shù)據(jù)類(lèi)型的時(shí)間復(fù)雜度

用對(duì)數(shù)據(jù)結(jié)構(gòu)是一個(gè)程序員應(yīng)用的基本技能,這篇整理一下python中基本的抽象數(shù)據(jù)類(lèi)型的一下特征,主要是增刪改查方面的性能。

list

python的列表內(nèi)部實(shí)現(xiàn)是數(shù)組(具體實(shí)現(xiàn)要看解析器, CPython的實(shí)現(xiàn) ),因此就有組數(shù)的特點(diǎn)安岂。超過(guò)容量會(huì)增加更多的容量,set, get 是O(1)帆吻,但del, insert, in的性能是O(n)域那。具體的看下表,'n'是容器中當(dāng)前的元素?cái)?shù)猜煮, 'k'需要操作的元素個(gè)數(shù)

Operation Average Case Amortized Worst Case
Copy O(n) O(n)
Append[1] O(1) O(1)
Insert O(n) O(n)
Get Item O(1) O(1)
Set Item O(1) O(1)
Delete Item O(n) O(n)
Iteration O(n) O(n)
Get Slice O(k) O(k)
Del Slice O(n) O(n)
Set Slice O(k+n) O(k+n)
Extend[1] O(k) O(k)
Sort O(n log n) O(n log n)
Multiply O(nk) O(nk)
x in s O(n)
min(s), max(s) O(n)
Get Length O(1) O(1)

dict

關(guān)于字典需要了解的是hash函數(shù)和哈希桶次员。一個(gè)好的hash函數(shù)使到哈希桶中的值只有一個(gè),若多個(gè)key hash到了同一個(gè)哈希桶中王带,稱之為哈希沖突淑蔚。查找值時(shí),會(huì)先定位到哈希桶中愕撰,再遍歷hash桶刹衫。更詳細(xì)的信息請(qǐng)點(diǎn)這里。在hash基本沒(méi)有沖突的情況下get, set, delete, in方面都是O(1)搞挣。

Operation Average Case Amortized Worst Case
Copy[2] O(n) O(n)
Get Item O(1) O(n)
Set Item[1] O(1) O(n)
Delete Item O(1) O(n)
x in s O(1) O(n)
Iteration[2] O(n) O(n)

set

內(nèi)部實(shí)現(xiàn)是dict的带迟。在in操作上是O(1), 這一點(diǎn)比list要強(qiáng)。

Operation Average case Worst Case
x in s O(1) O(n)
Union s|t O(len(s)+len(t))
Intersection s&t O(min(len(s), len(t)) O(len(s) * len(t))
Multiple intersection s1&s2&..&sn (n-1)*O(l) where l is max(len(s1),..,len(sn))
Difference s-t O(len(s))
s.difference_update(t) O(len(t))
Symmetric Difference s^t O(len(s)) O(len(s) * len(t))
s.symmetric_difference_update(t) O(len(t)) O(len(t) * len(s))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末囱桨,一起剝皮案震驚了整個(gè)濱河市仓犬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌舍肠,老刑警劉巖搀继,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窘面,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡律歼,警方通過(guò)查閱死者的電腦和手機(jī)民镜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)啡专,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)险毁,“玉大人,你說(shuō)我怎么就攤上這事们童∨峡觯” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵慧库,是天一觀的道長(zhǎng)跷跪。 經(jīng)常有香客問(wèn)我,道長(zhǎng)齐板,這世上最難降的妖魔是什么吵瞻? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮甘磨,結(jié)果婚禮上橡羞,老公的妹妹穿的比我還像新娘。我一直安慰自己济舆,他們只是感情好卿泽,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著滋觉,像睡著了一般签夭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上椎侠,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天第租,我揣著相機(jī)與錄音,去河邊找鬼我纪。 笑死慎宾,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的宣羊。 我是一名探鬼主播璧诵,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼仇冯!你這毒婦竟也來(lái)了之宿?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤苛坚,失蹤者是張志新(化名)和其女友劉穎比被,沒(méi)想到半個(gè)月后色难,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡等缀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年枷莉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尺迂。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡笤妙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出噪裕,到底是詐尸還是另有隱情蹲盘,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布膳音,位于F島的核電站召衔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏祭陷。R本人自食惡果不足惜苍凛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望兵志。 院中可真熱鬧醇蝴,春花似錦、人聲如沸毒姨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)弧呐。三九已至闸迷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間俘枫,已是汗流浹背腥沽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸠蚪,地道東北人今阳。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像茅信,于是被迫代替她去往敵國(guó)和親盾舌。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Map 是一種很常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)一些無(wú)序的鍵值對(duì)。在主流的編程語(yǔ)言中膝舅,默認(rèn)就自帶它的實(shí)現(xiàn)嗡载。C、C++ 中的...
    一縷殤流化隱半邊冰霜閱讀 9,266評(píng)論 23 67
  • 教你如何迅速秒殺掉:99%的海量數(shù)據(jù)處理面試題 本文經(jīng)過(guò)大量細(xì)致的優(yōu)化后仍稀,收錄于我的新書(shū)《編程之法》第六章中洼滚,新書(shū)...
    Helen_Cat閱讀 7,426評(píng)論 1 39
  • 主要內(nèi)容源自解讀《Fluent Python》,理解如有錯(cuò)誤敬請(qǐng)指正:-) dict對(duì)象的最原始的接口描述是 co...
    曉風(fēng)翌日閱讀 4,882評(píng)論 0 4
  • 如果有來(lái)生 我愿做你岸邊的一棵柳 沒(méi)有虬曲的麗影 沒(méi)有參天的憧憬 只近聽(tīng)你的叮咚和叮嚀 更愿一起恪守寧?kù)o 你瀲艷的...
    江兆勇Jon閱讀 364評(píng)論 0 3
  • 踐行29天 《如何理解:好人都給你談錢(qián)技潘,壞人都給你講道理》 請(qǐng)先定義好人遥巴,壞人! 讓你賺錢(qián)的人是好人崭篡?能指導(dǎo)你賺錢(qián)...
    徐殊文閱讀 250評(píng)論 0 0