android list 替换元素_Python数据结构(一)List使用(大厂面试解答)
List是什么?
List顧名思義就是列表,那么它具體描述是什么呢?
列表是一個線性的集合,它允許用戶在任何位置插入、刪除、訪問和替換元素。在Python中l(wèi)ist是保留字,List中的每個元素都有自己的編號,很像C、C++、java中的數(shù)組,但是List更強大。列表主要有以下幾個特點:
- 列表中元素順序是有序的。比如,你將1,2,3一次存入列表,那個列表中元素順序一定是1,2,3,而不會是其他的。
- 列表長度不確定。不同于C/C++里的數(shù)組,列表長度不確定,在使用列表時不需要提前聲明長度。
- 列表中存儲的元素類型可以不唯一??梢詫⑷魏螙|西加入列表中,其中元素之間可以沒有任何關系。
- 列表中可以有重復元素。
List簡單使用
1. 列表創(chuàng)建
創(chuàng)建一個列表,只要把逗號分隔的不同的數(shù)據(jù)項使用方括號括起來即可。如下所示:
此外,如果創(chuàng)建一些常用的數(shù)列等列表,可采取以下pythonic的方法快速創(chuàng)建列表:
2. 列表訪問
列表訪問和其他數(shù)組訪問差不多,常用索引。但是python列表可以切片,可以取指定索引區(qū)間內的元素。
3. 操作列表的函數(shù)
- len(list):列表元素個數(shù)
- max(list):返回列表元素最大值
- min(list):返回列表元素最小值
- list(seq):將元組轉換為列表
- del:刪除列表,釋放內存空間
例子:
3. 列表類型定義的函數(shù)
- list.append(obj):在列表末尾添加新的對象
- list.count(obj):統(tǒng)計某個元素在列表中出現(xiàn)的次數(shù)
- list.extend(seq):在列表末尾一次性追加另一個序列中的多個值
- list.index(obj):從列表中找出某個值第一個匹配項的索引位置
- list.insert(index, obj):將對象插入列表
- list.pop(obj=list[-1]):移除列表中的一個元素(默認最后一個元素),并返回
- list.remove(obj):移除列表中某個值的第一個匹配項
- list.reverse():反向列表中元素
- list.sort([func]):對原列表進行排序
例子:
list一些常見函數(shù)的時間復雜度
常見函數(shù)的時間復雜度
【附加閱讀】
底層實現(xiàn)機制
List對象是用c結構來實現(xiàn),由一個保存元素的指針數(shù)組和預先分配的內存總容量構成。分離式結構,兩者之間用一個元素建立一個鏈接,連在一起。能夠根據(jù)元素的數(shù)量自動的擴充或者縮小list的內存大小。
要在內存中給集合開辟一塊區(qū)域,總得先確定大小(容量),不然如何開辟?另外,確定區(qū)域后,還要知道當前已經(jīng)占用了幾個元素(元素個數(shù)),一旦溢出,就需要重新申請空間。要表達這種結構,有兩種實現(xiàn)方式。一種是把頭信息和元素串到一起,形成一個元素個數(shù)+2的表。另一種就是把頭信息和元素分開放,兩者之間用一個元素建立一個鏈接,連在一起。
存儲表信息的單元與元素存儲區(qū)以連續(xù)的方式安排在一塊存儲區(qū)里,兩部分數(shù)據(jù)的整體形成一個完整的順序表對象。一體式結構整體性強,易于管理。但是由于數(shù)據(jù)元素存儲區(qū)域是表對象的一部分,順序表創(chuàng)建后,元素存儲區(qū)就固定了。
分離式結構中表對象里只保存與整個表有關的信息(即容量和元素個數(shù)),實際數(shù)據(jù)元素存放在另一個獨立的元素存儲區(qū)里,通過鏈接與基本表對象關聯(lián)。一旦表需要擴充,對于一體式結構來說,就要重新申請一塊更大的空內存區(qū)域,將所有元素放入其中,再清空舊的內存區(qū)域。對于分離式結構來說,則需要將鏈接地址更新一下,順序表對象是不變的。
List的擴充采取兩種策略,每次擴充增加固定數(shù)目的存儲位置,這種策略可稱為線性增長,節(jié)省空間,但是擴充操作頻繁,操作次數(shù)多。每次擴充容量加倍,以空間換時間。從實現(xiàn)上來講,在python中創(chuàng)建空ist時,會申請一個8個元素大小的內存區(qū)域。以后如果滿了,就擴容4倍,且當元素總數(shù)達到50000時,再擴容就改為2倍。
總結
以上是生活随笔為你收集整理的android list 替换元素_Python数据结构(一)List使用(大厂面试解答)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 799元!Redmi显示器23.8英寸P
- 下一篇: Java多进程测试用例_Pytest x