Python中列表(list)常見(jiàn)操作的完整教學(xué)
對(duì)于列表的學(xué)習(xí),我整理了網(wǎng)上的一些資料,希望可以幫助到各位?。?!
定義和使用列表
在Python中,列表是一系列元素按特定的順序構(gòu)成的數(shù)據(jù)序列,這就意味著定義一個(gè)列表類(lèi)型的變量就可以保存多個(gè)數(shù)據(jù),而且允許存在重復(fù)數(shù)據(jù)。
變量:使用變量存儲(chǔ)數(shù)據(jù),但是存在一個(gè)缺點(diǎn):一個(gè)變量一次只能存儲(chǔ)一個(gè)數(shù)據(jù)
若要存儲(chǔ)多個(gè)數(shù)據(jù):一般使用列表
列表本質(zhì)上面是一個(gè)有序的集合。
在Python中,可以使用[ ]字面量語(yǔ)法來(lái)定義列表,列表中的多個(gè)元素用逗號(hào)進(jìn)行分隔
語(yǔ)法:
變量名 = 列表
列表名稱(chēng) = [數(shù)據(jù)1,數(shù)據(jù)2.....]
items1 = [36, 662, 97, 68, 59, 89] items2 = ['Python', 'Java', 'Go']
- 列表中存儲(chǔ)的數(shù)據(jù)為元素
- 列表中的元素從頭到尾進(jìn)行了編號(hào)。編號(hào)從0開(kāi)始,這個(gè)編號(hào)被稱(chēng)為下標(biāo)或者索引或者角標(biāo)
- 索引的取值范圍:0元素的個(gè)數(shù)-1
- 超過(guò)索引的范圍:列表越界
除此以外,還可以通過(guò)Python內(nèi)置的 list 函數(shù)將其他序列變成列表。它是創(chuàng)建列表對(duì)象的構(gòu)造器。
items1 = list(range(1, 10))
print(items1) # [1, 2, 3, 4, 5, 6, 7, 8, 9]
items2 = list('hello')
print(items2) # ['h', 'e', 'l', 'l', 'o']1.創(chuàng)建列表
list1 = [ ] 空列表
2.帶元素的列表
list2=["五菱宏光","哈弗H6","大狗","歐拉",True]
3.列表中的元素可以是不同的數(shù)據(jù)類(lèi)型
list3=[12,3.13,True,Fa1se,"he11o","米西米西"]
注意:將數(shù)據(jù)保存到列表的時(shí)候,不用考慮列表的大小,如果數(shù)據(jù)很大的話(huà),底層會(huì)進(jìn)行自動(dòng)擴(kuò)容
需要說(shuō)明的是,列表是一種可變數(shù)據(jù)類(lèi)型,也就是說(shuō)列表可以添加元素、刪除元素、更新元素
列表的運(yùn)算符
列表支持拼接、重復(fù)、成員運(yùn)算、索引和切片以及比較運(yùn)算
items1 = [35, 12, 99, 68, 55, 87]
items2 = [45, 8, 29]
# 列表的拼接
items3 = items1 + items2
print(items3) # [35, 12, 99, 68, 55, 87, 45, 8, 29]
# 列表的重復(fù)
items4 = ['hello'] * 3
print(items4) # ['hello', 'hello', 'hello']
# 列表的成員運(yùn)算
print(100 in items3) # False
print('hello' in items4) # True
# 獲取列表的長(zhǎng)度(元素個(gè)數(shù))
size = len(items3)
print(size) # 9
# 列表的索引
print(items3[0], items3[-size]) # 35 35
items3[-1] = 100
print(items3[size - 1], items3[-1]) # 100 100
# 列表的切片
print(items3[:5]) # [35, 12, 99, 68, 55]
print(items3[4:]) # [55, 87, 45, 8, 100]
print(items3[-5:-7:-1]) # [55, 68]
print(items3[::-2]) # [100, 45, 55, 99, 35]
# 列表的比較運(yùn)算
items5 = [1, 2, 3, 4]
items6 = list(range(1, 5))
# 兩個(gè)列表比較相等性比的是對(duì)應(yīng)索引位置上的元素是否相等
print(items5 == items6) # True
items7 = [3, 2, 1]
# 兩個(gè)列表比較大小比的是對(duì)應(yīng)索引位置上的元素的大小
print(items5 <= items7) # True值得一提的是,由于列表是可變類(lèi)型,所以通過(guò)索引操作既可以獲取列表中的元素,也可以更新列表中的元素。對(duì)列表做索引操作一樣要注意索引越界的問(wèn)題,對(duì)于有N個(gè)元素的列表,正向索引的范圍是0到N-1,負(fù)向索引的范圍是-1到-N,如果超出這個(gè)范圍,將引發(fā)IndexError異常,錯(cuò)誤信息為:list index out of range。
列表元素的遍歷
如果想逐個(gè)取出列表中的元素,可以使用for循環(huán),有以下三種做法。
方法一:
items = ['Python', 'Java', 'Go', 'Kotlin']
for index in range(len(items)):
print(items[index])方法二:
items = ['Python', 'Java', 'Go', 'Kotlin']
for item in items:
print(item)方法三:
# 第三種方式:enumrate()同時(shí)遍歷索引和元素 for index,value in enumerate(list3): print(index,value)
列表的方法
#1.添加元素
#a.append() 向列表的尾部追加元素
list1=["香妃","妲己","趙飛燕","楊貴妃","東施"]
print(list1)
#追加單個(gè)元素
list1.append("西施")
#追加多個(gè)元素的時(shí)候,不能直接追加,必須使用列表的方式追加,原列表變成了二維列表list1.append(["王昭君","貂蟬","大小喬"])
print(list1)
#b.extend用于在列表末尾一次追加另一個(gè)列表中的多個(gè)元素
list1=["香妃","妲己","趙飛燕","楊貴妃","東施"]
list1.extend(["乾隆","商紂王","漢昭帝","唐玄宗","解博超"])
list1.extend("秦始皇") #"秦""始""皇"
print(list1)
#c.insert()在列表中指定的索引處插入元素,后面的其他的元素依次后延
list2=["秦始皇","漢武帝","曹操","劉備","孫權(quán)"]
list2.insert(1,"劉邦")
#若想一次性插入多個(gè)元素使用列表的形式插入原列表會(huì)變?yōu)槎S列表
list2.insert(3,["諸葛亮","馬超"])
print(list2)
#2.刪除元素
list2=["秦始皇","漢武帝","曹操","劉備","孫權(quán)"]
#pop()傳輸?shù)膮?shù)是下標(biāo),不傳參數(shù)的時(shí)候,默認(rèn)移除最后一個(gè)元素,返回的是原列表
print(list2)
list2.pop()["秦始皇","漢武帝","曹操","劉備"]
list2.pop(2) #['秦始皇','漢武帝','劉備','孫權(quán)']
print(list2)
#remove()傳輸?shù)膮?shù)是指定移除的元素
list2.remove("劉備")
print(list2)
#clear()清空列表
print(list2)
list2.clear()
print(list2) #[]
3.獲取元素
list=[12,34,2,5.23,True,False,"hello"]
print(len(list)) #len獲取列表的長(zhǎng)度
#獲取列表中的最大值max()
list1=[12,3,4,32,98,14,3,78,3,34,3]
print(max(list1))
#獲取列表中的最小值min()
list1=[12,3,4,32,98,14,3,78,3,34,3]
print(min(list1))
#獲取指定元素的索引 index(元素名稱(chēng))
print(list1.index(98))
# 查找元素的索引位置
items = ['Python', 'Java', 'Java', 'Go', 'Kotlin', 'Python']
print(items.index('Python')) # 0
print(items.index('Python', 2)) # 5
# 注意:雖然列表中有'Java',但是從索引為3這個(gè)位置開(kāi)始后面是沒(méi)有'Java'的
print(items.index('Java', 3)) # ValueError: 'Java' is not in list
# 查找元素出現(xiàn)的次數(shù)
items = ['Python', 'Java', 'Java', 'Go', 'Kotlin', 'Python']
# 查找元素出現(xiàn)的次數(shù)
print(items.count('Python')) # 2
print(items.count('Go')) # 1
print(items.count('Swfit')) # 0
4.其他用法
#列表的其他用法
list=[12,42,34,16,87]
print(list)
#reverse翻轉(zhuǎn)列表元素 注意:在原列表的內(nèi)部進(jìn)行翻轉(zhuǎn),不會(huì)生成新列表#list.reverse()
print(list)
#sort()對(duì)原列表元素進(jìn)行排序,默認(rèn)是升序 不會(huì)生成一個(gè)新的列表
#升序
list.sort()
#降序 在sort函數(shù)中傳入reverse=True實(shí)現(xiàn)降序#list.sort(reverse=True)
print(list)
#sorted()對(duì)列表元素進(jìn)行排序,默認(rèn)是升序,排序的結(jié)果會(huì)生成一個(gè)新列表
#升序
list1=sorted(list)
#降序傳入reverse=True
list1=sorted(list,reverse=True)
print(list1)
list2=["a","hello","abe","bc","everyone"]#按照元素的長(zhǎng)度進(jìn)行排序
list3=sorted(list2,key=len)
print(list3)需要提醒大家,
在使用remove方法刪除元素時(shí),如果要?jiǎng)h除的元素并不在列表中,會(huì)引發(fā)ValueError異常,錯(cuò)誤消息是:list.remove(x): x not in list。
在使用pop方法刪除元素時(shí),如果索引的值超出了范圍,會(huì)引發(fā)IndexError異常,錯(cuò)誤消息是:pop index out of range。
從列表中刪除元素其實(shí)還有一種方式,就是使用Python中的del關(guān)鍵字后面跟要?jiǎng)h除的元素,這種做法跟使用pop方法指定索引刪除元素沒(méi)有實(shí)質(zhì)性的區(qū)別,但后者會(huì)返回刪除的元素,前者在性能上略?xún)?yōu)(del對(duì)應(yīng)字節(jié)碼指令是DELETE_SUBSCR,而pop對(duì)應(yīng)的字節(jié)碼指令是CALL_METHOD和POP_TOP)。
items = ['Python', 'Java', 'Go', 'Kotlin'] del items[1] print(items) # ['Python', 'Go', 'Kotlin']
二維列表
一個(gè)列表的元素是一個(gè)列表
list=[12,34,6,7,"boy",True] #一維列表 list1=[32,14,"girl",False,[16,31,9.12,"haha"]] #二維列表print(list1[1]) #14 print(list1[4][2]) #9.12
列表生成式
list comprehension
系統(tǒng)內(nèi)置的用于創(chuàng)建list的方式
range(start,end,step)缺點(diǎn):生成的列表一般情況下都是等差數(shù)列
#最基本的列表
#1.生成1-10之間所有的數(shù)字
list1=list(range(1,11))
print(list1)
#需求:生成列表[1,4,9,16,25]
#第一種方法:使用for循環(huán)為空列表添加元素
for i in range(1,6):
list2.append(i**2)
print(list2)
#第二種方法:使用列表生成式
list3=[i**2 for i in range(1,6)]
print(list3) #[1,4,9,16,25]
#使用列表生成式生成1-10之間所有的奇數(shù)
list4=[i for i in range(1,11) if i%2==1]
print(list4)
#使用列表生成式生成1-10之間所有的奇數(shù)并且能被3整除的數(shù)字
list5=[i for i in range(1,11) if i%2==1 and i%3==0]
print(list5)
#列表生成式中使用雙重循環(huán)
list6=[i+j for i in "xyz" for j in "987"]
print(list6)
#字典生成式:
dict1={i:i*i for i in range(1,6)}
print(dict1)
#集合生成式:
set1={i*i for i in range(1,6)}
print(set1)嵌套的列表
Python語(yǔ)言沒(méi)有限定列表中的元素必須是相同的數(shù)據(jù)類(lèi)型,也就是說(shuō)一個(gè)列表中的元素可以任意的數(shù)據(jù)類(lèi)型,當(dāng)然也包括列表。如果列表中的元素又是列表,那么我們可以稱(chēng)之為嵌套的列表。嵌套的列表可以用來(lái)表示表格或數(shù)學(xué)上的矩陣,例如:我們想保存5個(gè)學(xué)生3門(mén)課程的成績(jī),可以定義一個(gè)保存5個(gè)元素的列表保存5個(gè)學(xué)生的信息,而每個(gè)列表元素又是3個(gè)元素構(gòu)成的列表,分別代表3門(mén)課程的成績(jī)。但是,一定要注意下面的代碼是有問(wèn)題的。
scores = [[0] * 3] * 5 print(scores) # [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
看上去我們好像創(chuàng)建了一個(gè)5 * 3的嵌套列表,但實(shí)際上當(dāng)我們錄入第一個(gè)學(xué)生的第一門(mén)成績(jī)后,你就會(huì)發(fā)現(xiàn)問(wèn)題來(lái)了,我們看看下面代碼的輸出。
# 嵌套的列表需要多次索引操作才能獲取元素 scores[0][0] = 95 print(scores) # [[95, 0, 0], [95, 0, 0], [95, 0, 0], [95, 0, 0], [95, 0, 0]]
正確做法:
scores = [[0] * 3 for _ in range(5)] scores[0][0] = 95 print(scores) # [[95, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
總結(jié)
Python中的列表底層是一個(gè)可以動(dòng)態(tài)擴(kuò)容的數(shù)組,列表元素在內(nèi)存中也是連續(xù)存儲(chǔ)的,所以可以實(shí)現(xiàn)隨機(jī)訪(fǎng)問(wèn)(通過(guò)一個(gè)有效的索引獲取到對(duì)應(yīng)的元素且操作時(shí)間與列表元素個(gè)數(shù)無(wú)關(guān))。
以上就是Python中列表(list)常見(jiàn)操作的完整教學(xué)的詳細(xì)內(nèi)容,更多關(guān)于Python列表的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實(shí)現(xiàn)RGB等圖片的圖像插值算法
這篇文章主要介紹了通過(guò)Python實(shí)先圖片的以下三種插值算法:最臨近插值法、線(xiàn)性插值法以及雙線(xiàn)性插值法。感興趣的小伙伴們可以了解一下2021-11-11
詳解Python使用simplejson模塊解析JSON的方法
這篇文章主要介紹了Python使用simplejson模塊解析JSON的方法,實(shí)例代碼基于Pyhton2.x版本,文中最后還附了關(guān)于simplejson模塊的一些性能放面的討論,需要的朋友可以參考下2016-03-03
Linux下使用python調(diào)用top命令獲得CPU利用率
這篇文章主要介紹了Linux下使用python調(diào)用top命令獲得CPU利用率,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2015-03-03
python星號(hào)(*)和雙星號(hào)(**)?函數(shù)動(dòng)態(tài)參數(shù)匹配及解包操作方法
這篇文章主要介紹了python星號(hào)(*)和雙星號(hào)(**)?函數(shù)動(dòng)態(tài)參數(shù)匹配及解包操作,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
一文解密Python函數(shù)的實(shí)現(xiàn)原理
函數(shù)是任何一門(mén)編程語(yǔ)言都具備的基本元素,它可以將多個(gè)要執(zhí)行的操作組合起來(lái),一個(gè)函數(shù)代表了一系列的操作。那就來(lái)看看Python函數(shù)的實(shí)現(xiàn)原理吧2023-03-03
用python記錄運(yùn)行pid,并在需要時(shí)kill掉它們的實(shí)例
下面小編就為大家?guī)?lái)一篇用python記錄運(yùn)行pid,并在需要時(shí)kill掉它們的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-01-01
使用Python實(shí)現(xiàn)文字轉(zhuǎn)語(yǔ)音并播放功能
這篇文章主要給大家介紹了使用Python實(shí)現(xiàn)文字轉(zhuǎn)語(yǔ)音并播放功能,文中通過(guò)代碼示例給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-01-01

