Python數(shù)據(jù)類型之List列表實例詳解
本文實例講述了Python數(shù)據(jù)類型之List列表。分享給大家供大家參考,具體如下:
list列表
1.概述:
通過之前的學(xué)習(xí),我們知道變量可以存儲數(shù)據(jù),但是一個變量只能存儲一個數(shù)據(jù),現(xiàn)在有一個班級,班級有20個人,現(xiàn)在求班級的平均年齡。
若按照之前的方式來解決
age1 = 10
age2 = 12
...
age20 = 12
average = (age1 + age2 +...+age20)/20
在這里,很顯然這種方法顯得很麻煩,而python提供了一種解決方案,就是使用列表,可以隨時添加和刪除其中的元素。
本質(zhì):list列表的本質(zhì)是一種有序的集合
2.創(chuàng)建列表
語法: 列表名 = [元素1,元素2,元素3…說明:列表中的選項被稱為元素,跟string類似,下標(biāo)也是從0開始計數(shù)
使用:創(chuàng)建列表
#創(chuàng)建空列表 list1 = [] #創(chuàng)建帶有元素的列表 list2 = [10, 20, 30, 10] print(list2) list3 = list(range(1,10)) list4 = [i for i in range(10)] print(list3) print(list4)
輸出:
[10, 20, 30, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
在列表中元素的數(shù)據(jù)類型可以不同(靈活性)
list3 = [33, "good", True, 10.32] print(list3)
輸出:
[33, 'good', True, 10.32]
3.列表元素的訪問
3.1 列表的取值
功能:訪問list列表中元素值
語法:列表名[索引]
list4 = [22, 33, 12, 32, 45] #下標(biāo)從0開始,最大值為len(list4)-1 print(list4[0])
輸出:
22
注意:當(dāng)索引值大于len(list4)-1的時候,會出現(xiàn)以下錯誤:
print(list4[5]) IndexError: list index out of range
這個錯誤就是下標(biāo)越界【下標(biāo)超出了可表示的范圍】
3.2 列表元素的替換
功能:更改列表元素的值
語法:列表名[下標(biāo)] = 值
list4 = [22, 33, 12, 32, 45] list4[0] = "hello" print(list4[0]) print(list4)
輸出:
hello
['hello', 33, 12, 32, 45]
4.列表操作
4.1 列表組合
語法: 列表3 = 列表1 + 列表2
list1 = [1, 2, 3] list2 = ['hello', 'yes', 'no'] list3 = list1 + list2 print(list3)
輸出:
[1, 2, 3, 'hello', 'yes', 'no']
4.2 列表重復(fù)
語法: 列表2 = 列表1 * n
list1 = [1, 2, 3] list2 = list1 * 2 print(list2)
輸出:
[1, 2, 3, 1, 2, 3]
4.3 判斷元素是否在列表中
語法:元素 in 列表
若存在則返回True,否則返回False
list1 = [1, 2, 3] print(1 in list1)
輸出:
True
4.4 列表截取
語法:列表[start: end] 表示獲取從開始下標(biāo)到結(jié)束下標(biāo)的所有元素[start, end)
list1 = [1, 2, 3, 'hello', 'yes', 'no'] print(list1[2:4]) #若不指定start,則默認(rèn)從0開始截取,截取到指定位置 #若不指定end,則從指定位置開始截取,截取到末尾結(jié)束
輸出:
[3, 'hello']
4.5 二維列表
語法:列表 =[列表1,列表2,列表3,… ,列表n]
#創(chuàng)建二維列表,即列表中的元素還是列表 list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
4.5 二維列表取值
語法:列表名[下標(biāo)1][下標(biāo)2]
注意:下標(biāo)1代表第n個列表(下標(biāo)從0開始),下標(biāo)2代表第n個列表中的第n個元素
list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]] print(list1[0][0])
輸出:
1
5.列表的方法
5.1 list.append(元素/列表)
功能:在列表中末尾添加新的元素【在原本的列表中追加元素】
注意:append()
中的值可以是列表也可以是普通元素
>>> list1 = [3, 4, 6] >>> list1.append(6) >>> print(list1) [3, 4, 6, 6]
5.2 list.extend(列表)
功能:在列表的末尾一次性追加另外一個列表中的多個值
注意:extend()
中的值只能是列表/元組[一個可迭代對象],不能是元素。
>>> list1 = [1,2,3] >>> list2 = [3, 4,5] >>> list1.extend(list2) >>> print(list1) [1, 2, 3, 3, 4, 5]
5.3 list.insert(下標(biāo)值, 元素/列表)
功能:在下標(biāo)處插入元素,不覆蓋原本的數(shù)據(jù),原數(shù)據(jù)向后順延。
注意:插入的數(shù)據(jù)可以是元素也可以為列表。
>>> list1 = [1,2,3] >>> list1.insert(1,0) >>> print(list1) [1, 0, 2, 3] >>> list1.insert(1,[2, 4, 8]) >>> print(list1) [1, [2, 4, 8], 0, 2, 3]
5.4 list.pop(下標(biāo)值)
功能:移除列表中指定下標(biāo)處的元素(默認(rèn)移除最后一個元素),并返回移除的數(shù)據(jù)。
>>> list1 = [1, [2, 4, 8], 0, 2, 3] >>> list1.pop() 3 >>> print(list1) [1, [2, 4, 8], 0, 2] >>> list1.pop(2) 0 >>> print(list1) [1, [2, 4, 8], 2]
5.5 list.remove(元素)
功能:移除列表中的某個元素第一個匹配結(jié)果
list1 = [1, 2,3,2,4] list1.remove(2) print(list1)
輸出:
[1, 3, 2, 4]
5.6 list.clear()
功能:清除列表中所有的數(shù)據(jù)
>>> list1 = [1, 2, 3] >>> list1.clear() >>> print(list1) []
5.7 list.index(元素[, start][, stop])
功能:從指定的范圍的列表中找出某個值第一匹配的索引值
若不指定范圍,則默認(rèn)是整個列表。
>>> list1 = [1, 2, 3] >>> list1.index(2) 1 >>> list1.index(4) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: 4 is not in list
注意:若在列表中找不到這個元素,則會報錯。
5.8 list.count(元素)
功能:查看元素在列表中出現(xiàn)的次數(shù)
>>> list1 = [1, 2, 3, 1] >>> list1.count(1) 2
5.9 len(list)
功能: 獲取元素個數(shù)
>>> list1 = [1, 2, 3, 1] >>> len(list1) 4
5.10 max(list)
語法:獲取列表中的最大值,元素是不同的數(shù)據(jù)類型時不能使用
>>> list1 = [1, 2, 3, 1] >>> max(list1) 3
5.11 min(list)
語法:獲取列表中的最小值,元素是不同的數(shù)據(jù)類型時不能使用
>>> list1 = [1, 2, 3, 1] >>> min(list1)
5.12 list.reverse()
語法: 列表倒敘,直接修改原列表,返回值為None。
>>> list1 = [1, 2, 3, 1] >>> list1.reverse() >>> print(list1) [1, 3, 2, 1]
5.13 list.sort()
語法:列表排序 默認(rèn)升序,元素是不同的數(shù)據(jù)類型時不能使用
>>> list1 = [1, 2, 3, 1] >>> list1.sort() >>> print(list1) [1, 1, 2, 3]
#倒序 list1 = [1, 2,3,2,4] list1.sort(reverse=False) print(list1)
輸出:
[1, 2, 2, 3, 4]
5.14 淺拷貝
語法:
list1 = [1, 2, 3] list2 = list1
>>> list1 = [1, 2, 3, 1] >>> list2 = list1 >>> print(list2) [1, 2, 3, 1] >>> print(id(list1)) 4314476424 >>> print(id(list2)) 4314476424
list1 = [1, 2,3,2,4] list2 = list1 list2[0] = 0 print(list1)
輸出:
[0, 2, 3, 2, 4]
注意:淺拷貝為引用拷貝,類似于快捷方式。
淺拷貝中一個變量發(fā)生改變,另一個也相應(yīng)發(fā)生改變,
5.15 深拷貝
語法:
list1 = [1, 2, 3] list2 = list1.copy()
方式2:
list2 = list1[:] >>> list1 = [1, 2, 3, 1] >>> list2 = list1.copy() >>> print(list2) [1, 2, 3, 1] >>> print(id(list2)) 4314525320 >>> print(id(list1)) 4314524808
list1 = [1, 2,3,2,4] list2 = list1[:] print(list2) print(id(list1)) print(id(list2))
輸出:
[1, 2, 3, 2, 4]
2485711112520
2485710239496
注意:深拷貝為內(nèi)存拷貝,開辟了新的內(nèi)存空間
5.16 list(元組)
功能:將元組轉(zhuǎn)為列表
>>> list1 = list((1, 2, 3, 4)) >>> print(list1) [1, 2, 3, 4]
6.列表的遍歷
6.1 使用for循環(huán)遍歷列表
語法:
for 變量名 in 列表 :
語句
功能:for循環(huán)主要用于遍歷列表
遍歷:指的是依次訪問列表中的每一個元素,獲取每個下標(biāo)對應(yīng)的元素值
說明:按照順序獲取列表中的每個元素,賦值給變量名,再執(zhí)行語句,如此循環(huán)往復(fù),直到取完列表中所有的元素為止
>>> list1 = ['hello', 78, '你好', 'good'] >>> for item in list1: ... print(item) ... hello 78 你好 good
6.2 使用while循環(huán)遍歷列表[使用下標(biāo)循環(huán)]
語法:
下標(biāo) = 0
while 下標(biāo) < 列表的長度:
語句
下標(biāo) += 1
>>> list1 = ['hello', 78, '你好', 'good'] >>> index = 0 >>> while index < len(list1): ... print(list1[index]) ... index += 1 ... hello 78 你好 good
6.3 同時遍歷下標(biāo)與元素
語法:
for 下標(biāo),變量 in enumerate(列表)
語句
>>> list1 = ['hello', 78, '你好', 'good'] >>> for index,item in enumerate(list1): ... print(index, item) ... 0 hello 1 78 2 你好 3 good
enumerate()[枚舉]函數(shù)用于一個可遍歷的數(shù)據(jù)對象(如列表,元組或者字符串)組合為一個索引序列,同時列出數(shù)據(jù)與數(shù)據(jù)下標(biāo),一般使用在for循環(huán)中
enumerate(obj, [start =0])
obj:一個可迭代對象
start:下標(biāo)起始位置
7、List轉(zhuǎn)dict
list1=[('a',1),('b',2),('c',3)] dict1={k:v for k,v in list1} dict2={v:k for k,v in list1} print(dict1) print(dict2)
輸出:
{'a': 1, 'b': 2, 'c': 3}
{1: 'a', 2: 'b', 3: 'c'}
8、切片
8.1 一個冒號
list1=['a','b','c','d','e'] print('獲取全部:',list1[:]) print('去頭去尾:',list1[1:-1]) print('取[2,4)',list1[2:4])
輸出:
獲取全部: ['a', 'b', 'c', 'd', 'e']
去頭去尾: ['b', 'c', 'd']
取[2,4) ['c', 'd']
冒號后面沒有值則默認(rèn)為list1的長度。
8.2兩個冒號
冒號后面是步長,切片的步長默認(rèn)為1,不可為0。
list1=['a','b','c','d','e'] print('獲取全部:',list1[::]) print('列表倒置:',list1[::-1]) print('從下標(biāo)0開始,步長為2',list1[::2]) print('從下標(biāo)1開始,步長為2',list1[1::2])
輸出:
獲取全部: ['a', 'b', 'c', 'd', 'e']
列表倒置: ['e', 'd', 'c', 'b', 'a']
從下標(biāo)0開始,步長為2 ['a', 'c', 'e']
從下標(biāo)1開始,步長為2 ['b', 'd']
常用的是list1[::-1]
,列表倒置。
更多Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python列表(list)操作技巧總結(jié)》、《Python編碼操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對大家Python程序設(shè)計有所幫助。
相關(guān)文章
Python sklearn對文本數(shù)據(jù)進(jìn)行特征化提取
這篇文章主要介紹了Python sklearn對文本數(shù)據(jù)進(jìn)行特征化提取,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-04-04Python編程實現(xiàn)生成特定范圍內(nèi)不重復(fù)多個隨機(jī)數(shù)的2種方法
這篇文章主要介紹了Python編程實現(xiàn)生成特定范圍內(nèi)不重復(fù)多個隨機(jī)數(shù)的2種方法,涉及Python基于random生成隨機(jī)數(shù)的常見操作技巧,需要的朋友可以參考下2017-04-04python使用itchat實現(xiàn)手機(jī)控制電腦
這篇文章主要為大家詳細(xì)介紹了python使用itchat實現(xiàn)手機(jī)控制電腦,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02Pytorch固定隨機(jī)數(shù)種子的方法小結(jié)
在對神經(jīng)網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練時,有時候會存在對訓(xùn)練過程進(jìn)行復(fù)現(xiàn)的需求,然而,每次運(yùn)行時 Pytorch、Numpy 中的隨機(jī)性將使得該目的變得困難重重,基于此,本文記錄了 Pytorch 中的固定隨機(jī)數(shù)種子的方法,需要的朋友可以參考下2023-12-12python tkinter實現(xiàn)界面切換的示例代碼
今天小編就為大家分享一篇python tkinter實現(xiàn)界面切換的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06python3 實現(xiàn)爬取TOP500的音樂信息并存儲到mongoDB數(shù)據(jù)庫中
今天小編就為大家分享一篇python3 實現(xiàn)爬取TOP500的音樂信息并存儲到mongoDB數(shù)據(jù)庫中,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08