列表基礎(chǔ)
- 創(chuàng)建列表
創(chuàng)建一個(gè)空列表
List = []#空列表
創(chuàng)建一個(gè)含有元素的列表
List = [1,2,3,4,"列表","元素"]
創(chuàng)建一個(gè)多類型元素列表
List = [2,45.13,3,4,5,"嵌套列表"] # 包含 整數(shù)、浮點(diǎn)數(shù)、字符串
創(chuàng)建嵌套列表
List = [1,(1,2,3,4),"列表","元素",{"元素":"列表"}] # 包含數(shù)字、元組、字符串、字典
-
訪問元素
列表訪問主要包括:索引、切片、循環(huán)
索引是指對(duì)應(yīng)元素所在的位置,與下標(biāo)是一個(gè)意思,索引是從0開始
使用索引獲取列表里的內(nèi)容
List=["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
print(List[0])
print(List[1])
print(List[2])
print(List[3])
輸出結(jié)果:
第1個(gè)元素
第2個(gè)元素
第3個(gè)元素
第4個(gè)元素
使用切片正向索引獲取列表里的內(nèi)容
List=["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
print(List[1:4])
輸出結(jié)果:
['第2個(gè)元素', '第3個(gè)元素', '第4個(gè)元素']
使用切片反向索引索引獲取列表里的內(nèi)容
List=["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
print(List[-1])
輸出結(jié)果:
第5個(gè)元素
通過反向索引取出所有元素
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
print(List[::-1])
輸出結(jié)果:
['第5個(gè)元素', '第4個(gè)元素', '第3個(gè)元素', '第2個(gè)元素', '第1個(gè)元素']
使用兩個(gè)冒號(hào)獲取帶間隔的序列元素,兩個(gè)冒號(hào)后的數(shù)字就是間隔長(zhǎng)度
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
print(List[::2])
輸出結(jié)果:
['第1個(gè)元素', '第3個(gè)元素', '第5個(gè)元素']
切片的完全形態(tài) 開始:結(jié)束:間隔
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
print(List[1:4:2])
輸出結(jié)果:
['第2個(gè)元素', '第4個(gè)元素']
使用for循環(huán)和enumerate函數(shù)來取出列表的索引
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
for i in enumerate(List):
print(i)
輸出結(jié)果:
(0, '第1個(gè)元素')
(1, '第2個(gè)元素')
(2, '第3個(gè)元素')
(3, '第4個(gè)元素')
(4, '第5個(gè)元素')
- 添加元素
使用append添加元素,每次添加一個(gè),列表的尾部添加
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
List.append("添加第1個(gè)元素")
print(List)
List.append("添加第2個(gè)元素")
print(List)
輸出結(jié)果:
['第1個(gè)元素', '第2個(gè)元素', '第3個(gè)元素', '第4個(gè)元素', '第5個(gè)元素', '增加一個(gè)元素']#末尾處是新增的元素
['第1個(gè)元素', '第2個(gè)元素', '第3個(gè)元素', '第4個(gè)元素', '第5個(gè)元素', '添加第1個(gè)元素', '添加第2個(gè)元素']#末尾處是新增的第2個(gè)元素
使用insert添加元素,在指定的位置添加元素
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
List.insert(0,"在0的位置添加一個(gè)元素")
print(List)
輸出結(jié)果:
['在0的位置添加一個(gè)元素', '第1個(gè)元素', '第2個(gè)元素', '第3個(gè)元素', '第4個(gè)元素', '第5個(gè)元素']#0的位置元素變成了,新添加的元素
使用extend 方法實(shí)現(xiàn)批量添加元素時(shí)未創(chuàng)建一個(gè)新的列表,而是直接添加在原列表中
List=[1,3,5,7,8]
List.extend([10,20,30,40])
print(List)
輸出結(jié)果:
[1, 3, 5, 7, 8, 10, 20, 30, 40]#批量添加元素
使用+拼接列表,也可以完成批量元素的添加,但實(shí)際是創(chuàng)建了一個(gè)新列表
List=[1,3,5,7,8]
List1 = List + [20,30,40,50]
print(List)
print(List1)
輸出結(jié)果:
[1, 3, 5, 7, 8] #原列表
[1, 3, 5, 7, 8, 20, 30, 40, 50]#新創(chuàng)建列表
- 刪除元素
刪除元素的方法有三種:remove,pop,del
remove 直接刪除元素,若被刪除元素在列表內(nèi)有多個(gè),則只刪除一個(gè)
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第4個(gè)元素"]
List.remove("第4個(gè)元素")# 注:remove 直接寫要?jiǎng)h除的元素
print(List)
輸出結(jié)果:
['第1個(gè)元素', '第2個(gè)元素', '第3個(gè)元素', '第4個(gè)元素']#只刪除了一元素
pop 不帶參數(shù)默認(rèn)刪除列表最后一個(gè)元素;若帶參數(shù)則刪除此參數(shù)代表的索引處的元素
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
List.pop()
print(List)
List.pop(0)
print(List)
List.pop(-2)
print(List)
輸出結(jié)果:
['第1個(gè)元素', '第2個(gè)元素', '第3個(gè)元素', '第4個(gè)元素']# 不帶參數(shù)的輸出結(jié)果
['第2個(gè)元素', '第3個(gè)元素', '第4個(gè)元素', '第5個(gè)元素']# 帶參數(shù)的時(shí)候,根據(jù)索引刪除對(duì)于元素
['第1個(gè)元素', '第2個(gè)元素', '第3個(gè)元素', '第5個(gè)元素']# 可以使用正向索引和反向索引刪除
del與pop類似,刪除指定索引處的元素
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
del List[0] # 注意寫法 del + 列表的索引
print(List)
del List[-1]
print(List)
輸出結(jié)果:
['第2個(gè)元素', '第3個(gè)元素', '第4個(gè)元素', '第5個(gè)元素']#刪除第0個(gè)元素
['第1個(gè)元素', '第2個(gè)元素', '第3個(gè)元素', '第4個(gè)元素']#刪除最后一個(gè)元素
- List其他操作
in 與可迭代容器的結(jié)合,還用于判斷某個(gè)元素是否屬于此列表
List = [1,2,3,4,5]
if 4 in List:
print(True)
else:
print(False)
-----------------------------------------------------------------------------------------
List = [1,2,3,4,5]
if 7 in List:
print(True)
else:
print(False)
輸出結(jié)果:
True
False
內(nèi)置的list與數(shù)字結(jié)合,實(shí)現(xiàn)元素的復(fù)制
List = ["Hi"]*4
print(List)
輸出結(jié)果:
['Hi', 'Hi', 'Hi', 'Hi']
使用列表與數(shù)字相乘構(gòu)建二維列表,然后第一個(gè)元素賦值為[1,2],第二個(gè)元素賦值為[3,4]
List = [[]]*2
List[0]=[1,2]
List[1]=[3,4]
輸出結(jié)果:
[[1, 2], [3, 4]]
列表生成式 使用列表生成式創(chuàng)建1到10的所有數(shù)列表
列表生成式 使用列表生成式創(chuàng)建1到10的所有奇數(shù)列表
List =[i for i in range(1,11)]
List =[i for i in range(1,11) if i&1 ]
輸出結(jié)果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 3, 5, 7, 9]
- 常用API
clear 用于清空列表內(nèi)的所有元素
List =[1,2,3,4,5]
List.clear()
print(List)
輸出結(jié)果:
[]# 一個(gè)空列表
index 用于查找里面某個(gè)元素的索引
List =[1,2,3,4,5]
List.index(1)
print(List.index(1))
List.index(5)
print(List.index(5))
輸出結(jié)果:
0 # 1的索引是0
4 # 5的索引是4
count用于統(tǒng)計(jì)某元素的出現(xiàn)次數(shù)
List =[1,2,3,4,5,3,5,5,3,3,2]
List.count(3)
print(List.count(3))
List.count(5)
print(List.count(5))
輸出結(jié)果:
4 #3這個(gè)元素出現(xiàn)4次
3 #5這個(gè)元素出現(xiàn)3次
sort 用于元素排序,注:sort 方法不適合 int 和 str 類型的比較,list 和 str 不能相互比較
List =[1,30,50,48,66]
List.sort()#升序排列
print(List)
List.sort(reverse=True)#降序排列
print(List)
輸出結(jié)果:
[1, 30, 48, 50, 66] #升序排列
[66, 50, 48, 30, 1] #降序排列
reverse 完成列表反轉(zhuǎn),注:reverse與切片[::-1]區(qū)別,切片有返回值,reverse沒有返回值
List = ["第1個(gè)元素","第2個(gè)元素","第3個(gè)元素","第4個(gè)元素","第5個(gè)元素"]
List.reverse()
print(List)
輸出結(jié)果:
['第5個(gè)元素', '第4個(gè)元素', '第3個(gè)元素', '第2個(gè)元素', '第1個(gè)元素']
列表是可變的,可變的對(duì)象是不可哈希的,不可哈希的對(duì)象不能被映射,因此不能被用作字典的鍵
List=[1,3]
dict ={List:'不能被哈希'} #會(huì)拋出如下異常
print(dict)
輸出結(jié)果:
TypeError: unhashable type: 'list'
-
列表的拷貝
直接賦值:其實(shí)就是對(duì)象的引用(別名)
淺拷貝(copy):拷貝父對(duì)象,不會(huì)拷貝對(duì)象的內(nèi)部的子對(duì)象
深拷貝(deepcopy): copy 模塊的 deepcopy 方法,完全拷貝了父對(duì)象及其子對(duì)象