列表的基本特點
- 大小可變,內容可修改
- 是一種順序結構,可索引可迭代
- 可以由多種元素組合構成(字符串、整數(shù)、浮點數(shù)、可迭代對象)
列表的初始化
-
[]:構建一個空的列表 -
list(): 構建一個空的列表 -
[ele1, ele2, ele3 ... elen]:構建一個包含如上元素的列表 -
list(iterable):使用一個可迭代對象來構建新的列表,列表元素是可迭代對象的元素-
[iterable]:構建的也時一個列表,但是元素不是iterable中的元素,是iterable的返回類型
-
列表索引、元素修改、長度查詢
- 列表的索引
-
list[index]:使用[]作為索引符號,index作為索引標記 -
index:有正負索引兩種形式,正索引從0開始,負索引從-1開始 - 索引越界:會拋出IndexError異常
-
- 元素修改
-
list[index] = value:修改索引位置處的元素值
-
- 列表長度查詢
-
len(list):查詢list的元素個數(shù),時間復雜度為0(1)
-
列表常用方法
- 列表元素查詢(不推薦使用)
-
list.index(value [,start [,end]]):在列表中查詢value第一次出現(xiàn)的位置,可以指定起止索引值 [start, end) - 起止索引默認從左到右
- 匹配不到value值,會拋出ValueError異常
- 時間復雜度:
O(n)
-
- 列表元素計數(shù) ( 不推薦使用)
-
list.count(value):查詢列表中value出現(xiàn)的總次數(shù) - 時間復雜度:
O(n)
-
- 列表增加元素
-
list.append(object):在列表的尾部添加元素 object (最常用)- 返回值為None,表明是在當前的列表中直接修改,不產(chǎn)生新的列表
- 時間復雜度:
O(1)
-
list.insert(index, object):在指定索引位置添加元素 object- 返回值為None,就地修改不產(chǎn)生新列表
- 時間復雜度:
O(n) - 指定索引如果有越界行為,會被強行拉到列表頭部和尾部添加元素
-
list.extend(iterable):列表擴展,將可迭代對象中的元素依次添加到list中- 返回值為None,對list直接修改不產(chǎn)生新的列表
-
list1 + list2:表示將兩個list連接起來- 產(chǎn)生新的列表,原列表不發(fā)生變化
-
list * num:重復操作- 將列表中的元素重復num次,返回一個新的列表
- 注意非引用對象和引用對象的區(qū)別(非引用對象直接復制元素值,引用對象復制內存地址)
-
- 列表刪除元素
-
list.remove(value):刪除從左到右匹配到的第一個值為value的元素- 返回值為None,在原列表上直接修改
- 時間復雜度:
O(n)
-
list.pop([index]):彈出列表中索引位置index處的元素 (最常用)- 返回值為item ,原列表中有修改
- 如果不指定索引值,默認彈出列表中最后一個元素值(時間復雜度為O(1))
-
list.clear():清除列表中的元素- 返回一個空列表
-
列表其他方法
- 列表元素翻轉
-
list.reverse():將列表元素翻轉- 返回None, 就地修改列表
-
- 列表排序
-
list.sort(key=none, reverse=False):對列表元素進行排序- 返回None,就地修改列表
- 默認為升序,reverse參數(shù)設置為True,將列表翻轉排序
-
key=function:將列表中的元素使用key指定的函數(shù)轉換成要求的類型
-
列表復制
-
列表淺復制
-
lst1 = lst2: list1 和 list2 指向同一塊內存地址,一個修改兩個都變化 -
copy():非引用類型變量復制元素值,引用類型變量復制內存地址- 修改非引用類型變量時,彼此不會影響
- 修改引用類型數(shù)值會使兩個列表中的元素值都修改
- 列表判定:
==判定兩個列表中元素值是否完全一致,會將引用類型中的元素值拿出對比
-
-
列表深復制
-
deepcopy():來自copy模塊中,會解析引用類型,兩個列表之間不在有相互聯(lián)系
-