- Python編程基礎(chǔ)與應(yīng)用
- 李方園主編
- 1947字
- 2021-10-27 16:38:25
2.2.2 列表的基本操作與方法

2-2 列表的基本操作與方法
1.通用操作
作為序列的一員,列表可使用“+”和“*”操作符,前者用于組合列表,后者用于重復(fù)列表。
與列表相關(guān)的函數(shù)有:①len()返回列表元素個(gè)數(shù);②max()返回列表元素最大值;③min()返回列表元素最小值。
【例2-9】 操作符、函數(shù)在列表表達(dá)式或語(yǔ)句中的使用。

運(yùn)算結(jié)果:

2.刪除列表
對(duì)于已經(jīng)創(chuàng)建的列表,如果不再使用,可以使用del關(guān)鍵字將其刪除。
del關(guān)鍵字的語(yǔ)法格式為:

其中,listname表示要?jiǎng)h除列表的名稱(chēng)。
【例2-10】 刪除列表。

運(yùn)算結(jié)果:

在實(shí)際開(kāi)發(fā)中并不經(jīng)常使用del來(lái)刪除列表,因?yàn)镻ython自帶的垃圾回收機(jī)制會(huì)自動(dòng)銷(xiāo)毀無(wú)用的列表,即使開(kāi)發(fā)者不手動(dòng)刪除,Python也會(huì)自動(dòng)將其回收。
3.append()方法添加元素
append()方法用于在列表的末尾追加元素,該方法的語(yǔ)法格式如下:

其中,listname表示要添加元素的列表;obj表示要添加到列表末尾的數(shù)據(jù),它可以是單個(gè)元素,也可以是列表、元組等。
【例2-11】 用append()方法添加元素。

運(yùn)算結(jié)果:

從本例可以看出,當(dāng)給append()方法傳遞列表或者元組時(shí),此方法會(huì)將它們視為一個(gè)整體,作為一個(gè)元素添加到列表中,從而形成包含列表和元組的新列表。
4.extend()方法添加元素
extend()和append()的不同之處在于:extend()不會(huì)把列表或者元組視為一個(gè)整體,而是把它們包含的元素逐個(gè)添加到列表中。
extend()方法的語(yǔ)法格式如下:

其中,listname指的是要添加元素的列表;obj表示要添加到列表末尾的數(shù)據(jù),它可以是單個(gè)元素,也可以是列表、元組等。
【例2-12】 用extend()方法添加元素。

運(yùn)算結(jié)果:

5.insert()方法插入元素
append()和extend()方法只能在列表末尾插入元素,如果希望在列表中間某個(gè)位置插入元素,那么可以使用insert()方法。
insert()的語(yǔ)法格式如下:

其中,index表示指定位置的索引值。insert()會(huì)將obj插入到listname列表第index個(gè)元素的位置。
當(dāng)插入列表或者元組時(shí),insert()也會(huì)將它們視為一個(gè)整體,作為一個(gè)元素插入到列表中,這一點(diǎn)和append()是一樣的。
【例2-13】 用insert()方法插入元素。


運(yùn)算結(jié)果:

6.del刪除元素
del是Python中的關(guān)鍵字,專(zhuān)門(mén)用來(lái)執(zhí)行刪除操作,它不僅可以刪除整個(gè)列表,還可以刪除列表中的某些元素。
del可以刪除列表中的單個(gè)元素,格式為:

其中,listname表示列表名稱(chēng),index表示元素的索引值。
del也可以刪除中間一段連續(xù)的元素,格式為:

其中,start表示起始索引,end表示結(jié)束索引。del會(huì)刪除從索引start到end之間的元素,不包括end位置的元素。
【例2-14】 使用del刪除單個(gè)列表元素。

運(yùn)算結(jié)果:

【例2-15】 使用del刪除一段連續(xù)的元素。


運(yùn)算結(jié)果:

7.pop()刪除元素
用pop()方法刪除列表中指定索引處的元素,具體格式如下:

其中,listname表示列表名稱(chēng),index表示索引值。如果不寫(xiě)index參數(shù),默認(rèn)會(huì)刪除列表中的最后一個(gè)元素,類(lèi)似于數(shù)據(jù)結(jié)構(gòu)中的“出棧”操作。
至于數(shù)據(jù)結(jié)構(gòu)中的“入棧”操作,Python并沒(méi)有提供相應(yīng)的push()方法,這時(shí)可以使用append()來(lái)代替。
【例2-16】 根據(jù)索引值刪除元素。

運(yùn)算結(jié)果:

8.remove()刪除
除了del關(guān)鍵字,Python列表還提供了remove()方法,該方法會(huì)根據(jù)元素本身的值來(lái)進(jìn)行刪除操作。需要注意的是,remove()方法只會(huì)刪除第一個(gè)和指定值相同的元素,而且必須保證該元素是存在的,否則會(huì)引發(fā)ValueError錯(cuò)誤。
【例2-17】 根據(jù)索引值刪除元素。


運(yùn)算結(jié)果:

9.clear()刪除列表所有元素
clear()用來(lái)刪除列表的所有元素,即清空列表。
【例2-18】 清空列表。

運(yùn)算結(jié)果:

10.列表修改元素
有兩種修改列表(list)元素的方法,可以每次修改單個(gè)元素,也可以每次修改一組元素(多個(gè))。
(1)修改單個(gè)元素
修改單個(gè)元素非常簡(jiǎn)單,直接對(duì)元素賦值即可。
【例2-19】 修改列表的單個(gè)元素。

運(yùn)算結(jié)果:

使用索引得到列表元素后,通過(guò)“=”賦值就改變了元素的值。
(2)修改一組元素
Python支持通過(guò)切片語(yǔ)法給一組元素賦值。在進(jìn)行這種操作時(shí),如果不指定步長(zhǎng)(step參數(shù)),Python就不要求新賦值的元素個(gè)數(shù)與原來(lái)的元素個(gè)數(shù)相同;這意味著該操作既可以為列表添加元素,也可以為列表刪除元素。
【例2-20】 修改列表的一組元素。

運(yùn)算結(jié)果:

【例2-21】 使用字符串賦值時(shí)自動(dòng)把字符串轉(zhuǎn)換成每個(gè)字符都是一個(gè)元素的序列。

運(yùn)算結(jié)果:

【例2-22】 使用切片語(yǔ)法時(shí)指定步長(zhǎng)(step參數(shù))。

運(yùn)算結(jié)果:

本例中,使用切片語(yǔ)法指定步長(zhǎng)時(shí),要求所賦值的新元素個(gè)數(shù)與原有元素的個(gè)數(shù)相同。
11.count()方法
count()方法用來(lái)統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù),基本語(yǔ)法格式為:

其中,listname代表列表名,obj表示要統(tǒng)計(jì)的元素。
如果count()返回0,表示列表中不存在該元素,所以count()也可以用來(lái)判斷列表中的某個(gè)元素是否存在。
【例2-23】 count()方法用于統(tǒng)計(jì)元素個(gè)數(shù)和判斷元素存在與否。


運(yùn)算結(jié)果:

12.index()方法
index()方法用來(lái)查找某個(gè)元素在列表中出現(xiàn)的位置(也就是索引),如果該元素不存在,則會(huì)導(dǎo)致ValueError錯(cuò)誤,所以在查找之前最好使用count()方法判斷一下。
index()的語(yǔ)法格式為:

其中,listname表示列表名稱(chēng),obj表示要查找的元素,start表示起始位置,end表示結(jié)束位置。
start和end參數(shù)用來(lái)指定檢索范圍。
start和end可以都不寫(xiě),此時(shí)會(huì)檢索整個(gè)列表。
如果只寫(xiě)start不寫(xiě)end,那么表示檢索從start到末尾的元素。
如果start和end都寫(xiě),那么表示檢索start和end之間的元素。
index()方法會(huì)返回元素所在列表中的索引值。
【例2-24】 返回元素所在列表中的索引值。

運(yùn)算結(jié)果:

- 大學(xué)計(jì)算機(jī)基礎(chǔ)(第二版)
- Computer Vision for the Web
- 數(shù)據(jù)結(jié)構(gòu)與算法JavaScript描述
- Spring Cloud、Nginx高并發(fā)核心編程
- Learning Apache Mahout Classification
- D3.js 4.x Data Visualization(Third Edition)
- Android程序設(shè)計(jì)基礎(chǔ)
- Visual Basic程序設(shè)計(jì)(第三版)
- C陷阱與缺陷
- scikit-learn Cookbook(Second Edition)
- Access數(shù)據(jù)庫(kù)應(yīng)用教程(2010版)
- Zend Framework 2 Cookbook
- Spring Boot 2+Thymeleaf企業(yè)應(yīng)用實(shí)戰(zhàn)
- Game Development Patterns and Best Practices
- 開(kāi)發(fā)者測(cè)試