Python中的列表及其操作方法
前言:
本文的主要內(nèi)容是介紹Python中的列表及其方法的使用,涉及到的方法包括對(duì)列表元素進(jìn)行修改、添加、刪除、排序以及求列表長(zhǎng)度等,此外還介紹了列表的遍歷、數(shù)值列表、切片和元組的一些操作,文中附有代碼以及相應(yīng)的運(yùn)行結(jié)果輔助理解。
一、列表簡(jiǎn)介
列表由一系列按特定順序排列的元素組成,它能夠在一個(gè)地方存儲(chǔ)成組的信息,其中元素的個(gè)數(shù)可以只有幾個(gè),也可以有數(shù)百萬(wàn)個(gè)。
在Python中,用方括號(hào)來(lái)表示列表,并用逗號(hào)來(lái)分隔其中的元素,每個(gè)元素用單引號(hào)(也可以是雙引號(hào))括起來(lái)。
下面的代碼就是一個(gè)簡(jiǎn)單的列表示例:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear']
嘗試打印一下列表,代碼如下:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print(fruits)
輸出結(jié)果如下圖:
可以看到,如果簡(jiǎn)單的打印列表,其輸出結(jié)果就包含方括號(hào)、引號(hào)、元素名稱(chēng)和逗號(hào),這不是期待的輸出,下面來(lái)介紹怎么訪(fǎng)問(wèn)列表元素。
二、訪(fǎng)問(wèn)列表元素
列表是一個(gè)有序的集合,因此要訪(fǎng)問(wèn)列表中的任何一個(gè)元素,只要給出列表的名稱(chēng),再給出該元素的索引并將其放在方括號(hào)內(nèi),即可實(shí)現(xiàn)訪(fǎng)問(wèn)。
在Python中,索引是從0開(kāi)始的,元素的索引均是其位置減1。
如果不知道列表的長(zhǎng)度,但要訪(fǎng)問(wèn)最后一個(gè)元素,只要將索引指定為-1,Python即可返回最后一個(gè)列表元素,同理,索引為-2可返回倒數(shù)第二個(gè)列表元素。
下面是訪(fǎng)問(wèn)列表元素的例子:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print("The first element of fruits is "+fruits[0]+".") print("The second element of fruits is "+fruits[1]+".") print("The last element of fruits is "+fruits[-1]+".") #訪(fǎng)問(wèn)最后一個(gè)列表元素
輸出結(jié)果如下圖所示:
三、修改、添加和刪除列表元素
1.修改列表元素
修改列表元素只要指定列表名和要修改的元素的索引,再賦值給該元素新值即可。
下面是修改列表元素的例子:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print('Before modify:\nfruits = '+str(fruits)) fruits[1] = 'mango' #修改第二個(gè)元素 print('After modify:\nfruits = '+str(fruits))
輸出結(jié)果如下圖所示:
2.在列表中添加元素
在列表中添加元素有以下兩個(gè)方法:
- append(value) —— 在列表末尾添加元素。
- insert(index,value) —— 在列表指定的位置添加元素。
方法append()
通過(guò)追加的方式在列表的末尾插入元素,這很方便,但是有時(shí)候需要在列表指定的位置插入某個(gè)元素,這時(shí)就需要用到方法insert()
,將元素插入到指定的位置后,原列表中該位置之后的元素索引均加1,該位置之前的元素索引不變。
在列表中添加元素的例子:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print('Original:\nfruits = '+str(fruits)) fruits.append('mango') print('After append:\nfruits = '+str(fruits)) fruits.insert(2, 'watermelon') print('After insert:\nfruits = '+str(fruits))
輸出結(jié)果如下圖所示:
3.從列表中刪除元素
從列表中刪除元素有以下三個(gè)方法:
- del listname[index] —— 從列表中刪除一個(gè)元素,且不再使用。
- pop(index) —— 從列表中刪除一個(gè)元素,后續(xù)還會(huì)再使用。
- remove(‘element name’) —— 不知道要從列表中刪除的值所處的位置,但知道要?jiǎng)h除元素的值。
如果要從列表中刪除一個(gè)元素,且不再以任何方式使用它,就使用del語(yǔ)句;如果要在刪除元素后還能繼續(xù)使用它,就使用方法pop();如果只知道要?jiǎng)h除的元素的值,就使用方法remove(),方法remove()只刪除第一個(gè)指定的值,如果要?jiǎng)h除的值可能在列表中出現(xiàn)多次,就需要使用循環(huán)來(lái)判斷是否刪除了所有這樣的值。
刪除掉某一元素后,該元素之后的元素索引均減1,該元素之前的元素索引不變。
下面是從列表中刪除元素的例子:
fruits = ['grape', 'apple', 'watermelon', 'banana', 'orange', 'apple', 'pear', 'mango'] print('Original:\nfruits = '+str(fruits)) del fruits[2] ?#刪除列表的第三個(gè)元素 print('After del:\nfruits = '+str(fruits)) fruit_popped = fruits.pop(-1) ?#刪除列表的最后一個(gè)元素 print('After pop:\nfruits = '+str(fruits)) print('The popped fruit is ' + fruit_popped + '.') fruit_remove = 'apple' fruits.remove(fruit_remove) #刪除列表中名為fruit_remove的第一個(gè)元素 print('After remove:\nfruits = '+str(fruits)) print('The removed fruit is ' + fruit_remove + '.')
輸出結(jié)果如下圖所示:
四、對(duì)列表元素排序
對(duì)列表元素排序有以下三個(gè)方法:
- sort() —— 對(duì)列表進(jìn)行永久性排序。
- sorted() —— 對(duì)列表進(jìn)行臨時(shí)排序。
- reverse() —— 反轉(zhuǎn)列表元素的排列順序。
下面是使用sort()對(duì)列表元素排序的例子:
fruits = ['grape', 'apple', 'watermelon', 'banana', 'orange', 'pear', 'mango'] print('原列表:\nfruits = '+str(fruits)) fruits.sort() #按首字母順序 print('順序排列:\nfruits = '+str(fruits)) fruits.sort(reverse=True) #按首字母倒序 print('倒序排列:\nfruits = '+str(fruits))
輸出結(jié)果如下圖所示:
下面是使用sorted()對(duì)列表元素排序的例子:
num = ['1', '8', '6', '4', '9'] #這里的列表元素不加引號(hào)也可 print('原列表:\nnum = '+str(num)) print('臨時(shí)排序:\nnum = '+str(sorted(num))) #臨時(shí)排序 print('再一次輸出原列表:\nnum = '+str(num))
輸出結(jié)果如下圖所示:
下面是使用reverse()對(duì)列表元素排序的例子:
fruits = ['grape', 'apple', 'watermelon', 'banana', 'orange', 'pear', 'mango'] print('原列表:\nfruits = '+str(fruits)) fruits.reverse() #逆向排列列表元素 print('逆向排列:\nfruits = '+str(fruits))
輸出結(jié)果如下圖所示:
五、確定列表長(zhǎng)度
確定列表長(zhǎng)度的方法如下:
- len() —— 求列表長(zhǎng)度。
下面是確定列表長(zhǎng)度的例子:
fruits = ['grape', 'apple', 'watermelon', 'banana', 'orange', 'pear', 'mango'] print('列表 fruits 的長(zhǎng)度為:'+str(len(fruits))) num = ['1', '8', '6', '4', '9'] print('列表 num 的長(zhǎng)度為:'+str(len(num)))
輸出結(jié)果如下圖所示:
六、遍歷列表
在Python中,如果需要對(duì)列表中的每個(gè)元素都執(zhí)行相同的操作,可使用for循環(huán)。下面是遍歷整個(gè)列表的例子,注意for循環(huán)中各代碼行的縮進(jìn),縮進(jìn)不同,執(zhí)行的次數(shù)也不同。
fruits = ['grapes', 'apples', 'bananas', 'oranges', 'pears'] for fruit in fruits: ? ? print(fruit) ? ? print('I like '+str(fruit)+'.') #縮進(jìn),列表的長(zhǎng)度是多少,就執(zhí)行多少次 print('There are '+str(len(fruits))+' fruits here.') #不縮進(jìn),for循環(huán)結(jié)束后執(zhí)行,執(zhí)行1次
輸出結(jié)果如下圖所示:
編寫(xiě)for循環(huán)時(shí),用于存儲(chǔ)列表中每個(gè)值的臨時(shí)變量可以指定任何名稱(chēng),一般使用單數(shù)和復(fù)數(shù)式的名稱(chēng)可幫助我們更好地判斷代碼段處理的是單個(gè)列表元素還是整個(gè)列表。
七、創(chuàng)建數(shù)值列表
列表非常適合用于存儲(chǔ)數(shù)字集合,而Python提供了很多工具可幫助我們高效地處理數(shù)字列表,下面來(lái)看怎么創(chuàng)建數(shù)值列表。
1.函數(shù)range()的使用
range(start, end, step length) —— 在start到end這個(gè)左閉右開(kāi)區(qū)間上生成步長(zhǎng)為step length的一系列數(shù)字,含start值但不含end值,如果沒(méi)有參數(shù)step length,默認(rèn)步長(zhǎng)為1。
下面是函數(shù)range()使用的例子:
print('1-5之間步長(zhǎng)為1的輸出:') for value in range(1,5): ? ? print(value) print('1-5之間步長(zhǎng)為2的輸出:') for value in range(1,5,2): ? ? print(value)
輸出結(jié)果如下圖所示:
2.創(chuàng)建數(shù)字列表
將range()
作為list()
的參數(shù),輸出將為一個(gè)數(shù)字列表。當(dāng)然,也可以創(chuàng)建一個(gè)空的列表,然后通過(guò)for循環(huán)將函數(shù)range()生成的數(shù)依次追加到列表中,這樣也可以生成一個(gè)數(shù)字列表。
下面是使用函數(shù)range()創(chuàng)建數(shù)字列表的例子:
nums = list(range(1,5)) #直接使用函數(shù)list()創(chuàng)建列表 print('方法一:nums = '+str(nums)) nums=[] ?#通過(guò)for循環(huán)創(chuàng)建列表 for value in range(1,5): ? ? nums.append(value) print('方法二:nums = '+str(nums))
輸出結(jié)果如下圖所示:
可以看到,這兩種方法的輸出結(jié)果是一樣的。
3.列表解析
列表解析是將for循環(huán)和創(chuàng)建新元素的代碼合并成一行,并自動(dòng)附加新元素。
下面通過(guò)一個(gè)例子了解列表解析:
squares = [] for value in range(1,11): ? ? squares.append(value**2) print('一般方法:squares = ' + str(squares)) squares = [value**2 for value in range(1,11)] #列表解析 print('列表解析法:squares = ' + str(squares))
輸出結(jié)果如下圖所示:
由輸出結(jié)果可知,雖然兩者的輸出結(jié)果相同,但是列表解析能夠有效的縮減代碼的行數(shù)。
4.處理數(shù)字列表的函數(shù)應(yīng)用
下面是幾個(gè)專(zhuān)門(mén)用于處理數(shù)字列表的Python函數(shù):
- min() —— 求列表最小值。
- max() —— 求列表最大值。
- sum() —— 求列表元素之和。
下面是這幾個(gè)函數(shù)應(yīng)用的例子:
nums = [value for value in range(1,11)] print('nums = ' + str(nums)) print('列表nums中的最小值為:' + str(min(nums))) print('列表nums中的最大值為:' + str(max(nums))) print('列表nums的所有元素之和為:' + str(sum(nums)))
輸出結(jié)果如下圖所示:
八、切片
創(chuàng)建切片需要指定要使用的第一個(gè)元素和最后一個(gè)元素的索引,與函數(shù)range()類(lèi)似,Python在到達(dá)指定的第二個(gè)索引前面的元素后停止??梢造`活運(yùn)用索引使其從開(kāi)頭訪(fǎng)問(wèn)或訪(fǎng)問(wèn)至列表末尾,甚至從頭至尾復(fù)制列表。
下面是切片應(yīng)用的例子:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print('fruits = '+str(fruits)) print('列表fruits的前三個(gè)元素:'+str(fruits[:3])) print('列表fruits的后三個(gè)元素:'+str(fruits[-3:])) print('列表fruits的全部元素:'+str(fruits[:])) #復(fù)制列表 print('遍歷列表fruits的前三個(gè)元素:') for fruit in fruits[0:3]: ?#遍歷列表fruits的前三個(gè)元素 ? ? print(fruit)
輸出結(jié)果如下圖所示:
下面這個(gè)例子用來(lái)區(qū)分切片和列表關(guān)聯(lián)的區(qū)別:
fruits = ['grape', 'apple', 'banana', 'orange', 'pear'] print('Original fruits = '+str(fruits)) fruits_1 = fruits[:] ?#復(fù)制列表 fruits_2 = fruits #列表fruits和fruits_2相關(guān)聯(lián) fruits.append('mango') fruits_2.append('watermelon') print('After append fruits = '+str(fruits)) print('fruits_1 = '+str(fruits_1)) print('fruits_2 = '+str(fruits_2))
輸出結(jié)果如下圖所示:
由輸出結(jié)果可以看到,復(fù)制列表和關(guān)聯(lián)列表的區(qū)別還蠻大的,復(fù)制列表之后,原列表再更改也和已經(jīng)復(fù)制到的列表無(wú)關(guān),但是兩個(gè)列表關(guān)聯(lián)后,無(wú)論哪個(gè)列表變動(dòng)都會(huì)同步到另一個(gè)列表,因?yàn)閮蓚€(gè)變量都指向了同一個(gè)列表。
九、元組
列表非常適合用于存儲(chǔ)在程序運(yùn)行期間可能變化的數(shù)據(jù)集,然而,有時(shí)候我們需要?jiǎng)?chuàng)建一系列不可修改的元素,元組可以滿(mǎn)足這種需求。
Python將不能修改的值稱(chēng)為不可變的,而不可變的列表被稱(chēng)為元組。元組和列表類(lèi)似又有區(qū)別,它使用的是圓括號(hào)而不是方括號(hào)來(lái)標(biāo)識(shí),定義元組后,就可以使用索引像訪(fǎng)問(wèn)列表元素一樣來(lái)訪(fǎng)問(wèn)元組。
在Python中,不能給元組的元素賦值,修改元組的操作是被禁止的,但可以給存儲(chǔ)元組的變量賦值。
下面是元組應(yīng)用的例子:
group = (100, 50) print('group = '+str(group)) print('打印元組內(nèi)元素:') print(group[0]) print(group[1]) #打印元組中的各個(gè)元素 print('遍歷元組:') for element in group: #遍歷元組 ? ? print(element) print('修改元組變量后輸出:') group = (200, 100) #修改元組變量,給元組賦新值 for element in group: ? ? print(element)
輸出結(jié)果如下圖所示:
總結(jié):
以上就是Python中列表及其操作的所有內(nèi)容了,文中提到的一些方法都是對(duì)列表的簡(jiǎn)單操作,應(yīng)當(dāng)多加練習(xí)牢記,并在之后的編程中熟練使用。
到此這篇關(guān)于Python中的列表及其操作方法的文章就介紹到這了,更多相關(guān)Python列表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python合并多個(gè)excel的詳細(xì)過(guò)程
合并需求很多,常見(jiàn)的有相同數(shù)據(jù)結(jié)構(gòu),按行進(jìn)行縱向拼接,下面這篇文章主要給大家介紹了關(guān)于python合并多個(gè)excel的相關(guān)資料,需要的朋友可以參考下2022-10-10python中設(shè)置超時(shí)跳過(guò),超時(shí)退出的方式
今天小編就為大家分享一篇python中設(shè)置超時(shí)跳過(guò),超時(shí)退出的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12簡(jiǎn)單介紹Python中的decode()方法的使用
這篇文章主要介紹了簡(jiǎn)單介紹Python中的decode()方法的使用,是Python入門(mén)學(xué)習(xí)當(dāng)中必須掌握的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05python 解決Windows平臺(tái)上路徑有空格的問(wèn)題
這篇文章主要介紹了python 解決Windows平臺(tái)上路徑有空格的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Django框架創(chuàng)建項(xiàng)目的方法入門(mén)教程
這篇文章主要介紹了Django框架創(chuàng)建項(xiàng)目的方法,結(jié)合實(shí)例形式分析了Django框架管理工具的使用及創(chuàng)建項(xiàng)目的相關(guān)操作技巧,需要的朋友可以參考下2019-11-11Python如何處理大數(shù)據(jù)?3個(gè)技巧效率提升攻略(推薦)
這篇文章主要介紹了Python如何處理大數(shù)據(jù)?3個(gè)技巧效率提升攻略,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Python?設(shè)計(jì)模式創(chuàng)建型單例模式
這篇文章主要介紹了Python?設(shè)計(jì)模式創(chuàng)建型單例模式,即Singleton,單例是一種設(shè)計(jì)模式,應(yīng)用該模式的類(lèi)只會(huì)生成一個(gè)實(shí)例,下文詳細(xì)介紹需要的小伙伴可以參考一下2022-02-02在Windows服務(wù)器下用Apache和mod_wsgi配置Python應(yīng)用的教程
這篇文章主要介紹了在Windows服務(wù)器下用Apache和mod_wsgi配置Python應(yīng)用的教程,本文選擇以flask框架作為示例,需要的朋友可以參考下2015-05-05