發(fā)布時間:2024-01-24閱讀(9)

List是什么?
List顧名思義就是列表,那么它具體描述是什么呢?
列表是一個線性的集合,它允許用戶在任何位置插入、刪除、訪問和替換元素。在python中l(wèi)ist是保留字,List中的每個元素都有自己的編號,很像C、C 、java中的數(shù)組,但是List更強(qiáng)大。列表主要有以下幾個特點:

List簡單使用
1. 列表創(chuàng)建
創(chuàng)建一個列表,只要把逗號分隔的不同的數(shù)據(jù)項使用方括號括起來即可。如下所示:
此外,如果創(chuàng)建一些常用的數(shù)列等列表,可采取以下pythonic的方法快速創(chuàng)建列表:
2. 列表訪問
列表訪問和其他數(shù)組訪問差不多,常用索引。但是python列表可以切片,可以取指定索引區(qū)間內(nèi)的元素。
3. 操作列表的函數(shù)
例子:
3. 列表類型定義的函數(shù)
例子:
list一些常見函數(shù)的時間復(fù)雜度

常見函數(shù)的時間復(fù)雜度

【附加閱讀】
底層實現(xiàn)機(jī)制
List對象是用c結(jié)構(gòu)來實現(xiàn),由一個保存元素的指針數(shù)組和預(yù)先分配的內(nèi)存總?cè)萘繕?gòu)成。分離式結(jié)構(gòu),兩者之間用一個元素建立一個鏈接,連在一起。能夠根據(jù)元素的數(shù)量自動的擴(kuò)充或者縮小list的內(nèi)存大小。
要在內(nèi)存中給集合開辟一塊區(qū)域,總得先確定大小(容量),不然如何開辟?另外,確定區(qū)域后,還要知道當(dāng)前已經(jīng)占用了幾個元素(元素個數(shù)),一旦溢出,就需要重新申請空間。要表達(dá)這種結(jié)構(gòu),有兩種實現(xiàn)方式。一種是把頭信息和元素串到一起,形成一個元素個數(shù) 2的表。另一種就是把頭信息和元素分開放,兩者之間用一個元素建立一個鏈接,連在一起。

存儲表信息的單元與元素存儲區(qū)以連續(xù)的方式安排在一塊存儲區(qū)里,兩部分?jǐn)?shù)據(jù)的整體形成一個完整的順序表對象。一體式結(jié)構(gòu)整體性強(qiáng),易于管理。但是由于數(shù)據(jù)元素存儲區(qū)域是表對象的一部分,順序表創(chuàng)建后,元素存儲區(qū)就固定了。
分離式結(jié)構(gòu)中表對象里只保存與整個表有關(guān)的信息(即容量和元素個數(shù)),實際數(shù)據(jù)元素存放在另一個獨立的元素存儲區(qū)里,通過鏈接與基本表對象關(guān)聯(lián)。一旦表需要擴(kuò)充,對于一體式結(jié)構(gòu)來說,就要重新申請一塊更大的空內(nèi)存區(qū)域,將所有元素放入其中,再清空舊的內(nèi)存區(qū)域。對于分離式結(jié)構(gòu)來說,則需要將鏈接地址更新一下,順序表對象是不變的。
List的擴(kuò)充采取兩種策略,每次擴(kuò)充增加固定數(shù)目的存儲位置,這種策略可稱為線性增長,節(jié)省空間,但是擴(kuò)充操作頻繁,操作次數(shù)多。每次擴(kuò)充容量加倍,以空間換時間。從實現(xiàn)上來講,在python中創(chuàng)建空ist時,會申請一個8個元素大小的內(nèi)存區(qū)域。以后如果滿了,就擴(kuò)容4倍,且當(dāng)元素總數(shù)達(dá)到50000時,再擴(kuò)容就改為2倍。

歡迎分享轉(zhuǎn)載→http://www.avcorse.com/read-215673.html
下一篇:紅娘是哪一部作品中的人物
Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖