python中set、deque、list、dict內部實現原理


幾大重要的數據結構:數組(線性表)、鏈表、hash表

分別對應了python中的list、deque、dict、set,但其內部實現原理比C的要復雜不少,也有很多好用的接口

list

python中的list要滿足以下要求:

  是數組類型,以索引就可以直接取到元素,O(1)取元素

  元素可以是任意類型

  可以任意添加新元素,容易擴充

基於以上要求,list的實現設計為:

  1. 元素外置,每個元素只存儲index

  2. 分離式結構,表內元素和表頭信息不在一起

  3. 動態擴充

  在python中創建空list時,會申請一個8個元素大小的內存區域。以后如果滿了,就擴容4倍,不斷反復,直至當元素總數達到50000時,再擴容就改為2倍

各操作時間復雜度:

參考:

https://www.cnblogs.com/yifeixu/p/8893823.html 順序表的原理與python中的list類型

https://wiki.python.org/moin/TimeComplexity

deque

各操作時間復雜度:

 

dict

各操作時間復雜度:

 

set

各操作時間復雜度:

 

 

 

判斷值是否存在,千萬不要用list,list查找的復雜度為O(n),而set和dict由於用hash實現,查找的復雜度為O(1)

(待更新)

 

參考:

https://www.cnblogs.com/tianyiliang/p/10330878.html

https://www.cnblogs.com/linshuhui/p/9580620.html

https://blog.csdn.net/u010366748/article/details/51469937 (Python內置方法的時間復雜度)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM