python数据结构与算法之list
生活随笔
收集整理的這篇文章主要介紹了
python数据结构与算法之list
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 數據結構的操作
作為一種包含元素的數據結構,需要提供一些“標準”操作:
- 創建和銷毀
- 判斷是否空,如果容量有限,還需判斷是否滿
- 向結構中加入元素或從中刪除
- 訪問結構里的元素
不同的編程語言可能影響需要實現的操作:
由于python能自動回收不用的對象,因此不需要銷毀結構的操作
2. 從支持操作類型的角度看,數據結構可分為兩類:
- 不變數據結構,如python中的tuple和frozenset
- 變動數據結構,如python中的list,dict,set
3. python的list
list是一種線性結構,可看作線性表的一種實現:
- 基于下標(位置)的元素訪問和更新操作,復雜性為O(1)
- 允許任意加入元素,而且維持表對象標識不變(id())
list實現約束和解決方案:
- 要求O(1)的元素訪問并維持元素的順序,只能采用連續表技術,元素保存在一塊連續存儲區
- 要能容納任意多個元素,必須在元素個數將要超出存儲區容量時換一塊更大的存儲區。要想在替換存儲時id不變,只能采用分離式實現
list里元素越多,換一次存儲區的代價也越高:
- 要想平均結果較好,隨著表長度增加,換存儲區的頻率應降低
- 一種可能做法:每次換存儲區,容量加倍
一次高開銷操作后,保證有很多次低開銷操作,稱為分期付款式的常量復雜性
python中list采用上述設計,因此lst.insert(len(lst), x)比一般位置加入的效率高.等價寫法lst.append(x),若合適就應優先使用。
轉載于:https://www.cnblogs.com/Bella2017/p/8094667.html
總結
以上是生活随笔為你收集整理的python数据结构与算法之list的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hyperopt中文文档:Related
- 下一篇: A 01 如何理解会计中的借和贷