標籤:error 資料 code 括弧 eve 連結 indexer 移除 修改
1:列表 list的定義:
一個連續的,排列有序的數列,由若干個元素組成,元素可以是任意對象(數字、字串,對象,列表),元素可以使用索引尋找,線性資料結構。使用[ ]表示。列表是可變的,是可迭代對象。
列表具體定義
l=[ ] (空列表) l=list(iterable)
列表不能一開始就定義大小。指定大小會報類型錯誤(TypeError)。
2:列表,鏈表的差異:
列表list(使用index尋找,找的代價小,插入比較慢),
鏈表 (尋找的比較慢,插入比較方便),
具體花費的時間需要根據具體的使用方式權衡。
3:queue ,stack的差異
queue(隊列:先進先出的隊列)
stack(棧:先進後出)
4:列表的索引訪問
索引,也叫下標
正索引:從左至右,從0開始,為列表中每一個元素編號
負索引:從右至左,從-1開始
正負索引不可以超界,否則引起IndexError
約定:可以認為列表是從左至右排列,左邊是頭部,右邊是尾部,左邊是下界,右邊是上界
列表通過索引訪問。 list[index],index就是索引,使用中括弧訪問
5:列表的查詢方法
index(value,[start,[stop]])通過值尋找的。沒有查到就拋ValueError , 靠值遍曆的方式
通過值value,從指定的範圍內尋找列表內的元素是否匹配
匹配第一個就立即返回索引,匹配不到,就拋出異常ValueError
count(value) 靠值遍曆的方式 沒有尋找到數值不拋出異常。返回列表中匹配value的次數
時間複雜度 遍曆尋找的都是O(n),index和count方法都是O(n)
len () 統計列表的長度方法
6:列表元素的修改方法
list[index]=value 索引不要超界
列表增加、插入元素
append(object)--->None 列表尾部追加元素,返回None
返回None就意味著沒有新的列表產生,直接修改列表。 時間複雜度是O(1)
insert(index,object)----->None 在指定的索引index處插入元素object
返回None就意味著沒有新的列表產生,直接修改列表。時間複雜度是O(n)
注意(使用insert()時): 超越上界,尾部追加。 超越下屆,頭部追加
extend(iteratable)--->none 將可迭代對象的元素追加進來,返回None 。直接修改列表。
時間複雜度是O(1)
+----->list 建立一個沒有引用的新對象,之後會被記憶體回收
連結操作,將兩個列表串連起來,原列表不會改變,會產生新的列表
本質上是調用——add_()方法
------>list 重複操作,將本列表元素重複n次,放回新的列表 列表重複,如果設定數列裡面也是數列,會遇到修改一 個,其他重複的元素也跟著修改。
7:列表的刪除元素
remove(value)--->None 從左至右尋找第一個匹配的value的值,移除該元素,返回None
時間複雜度是O(n) ,需要一個一個尋找
pop([index])-->item
不指定索引index,就從列表尾部彈出一個元素,這種情況時間複雜度為:O(1)
指定索引index,就從索引出彈出一個元素,索引超界會拋出IndexError錯誤
clear()---None 清除列表所有元素,剩下一個空列表
8:列表的其他動作
reverse()-->None reverse將列表的元素反轉,放回None 直接修改列表。
sort(key=None,reverse=false)-->None
對列表元素進行排序,直接修改列表,預設升序。reverse為True,反轉,降序
key一個函數,指定Key如何排序 lst.sort(key=functionname)
in 判斷一個列表是否屬於另一個列表
Python中list總結