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