Pyhton少兒編程(6)可變序列——列表

一、什么是列表
列表是Python中內(nèi)置的有序的、可變序列。列表中的所有元素用逗號(hào)分隔,所有元素放在一對(duì)中括號(hào)[]里。
所謂序列,是指一塊可以存放多個(gè)數(shù)值的連續(xù)內(nèi)存空間,這些值按照一定順序排列,可通過(guò)每個(gè)值所在的位置編號(hào)(即“索引”)訪問(wèn)它們。
二、列表的創(chuàng)建
常見(jiàn)的創(chuàng)建方式有兩種:
1、直接創(chuàng)建。將元素用逗號(hào)分隔,并且用中括號(hào)[]括起來(lái)就可以了。

2、用list命令創(chuàng)建。list()既可以創(chuàng)建列表,也可以將元組或者字符串轉(zhuǎn)換成列表類型。

三、序列的常用操作
1、序列的訪問(wèn):
序列中的每一個(gè)元素都是有序號(hào)的,我們將這里的序號(hào)稱之為“索引”。序列的索引可以是正向的,也可以是反向的。正向索引時(shí),第一個(gè)元素的序號(hào)是0,從左往右的序號(hào)依次為:0, 1, 2, 3, 4, 5...。反向索引時(shí),第一個(gè)元素的序號(hào)是-1,從右往左的序號(hào)依次為:-1, -2,?-3, -4, -5...。

操作方法如下:序列名[索引號(hào)]。例如:訪問(wèn)列表test_list的第一個(gè)元素,記作:test_list[0];訪問(wèn)第四個(gè)元素,記作:test_list[3];訪問(wèn)倒數(shù)第二個(gè)元素,記作:test_list[-2];訪問(wèn)倒數(shù)第六個(gè)元素,記作:test_list[-6]。
注意:訪問(wèn)獲取元素的時(shí)候,索引號(hào)不能越界!也就是說(shuō),索引號(hào)不能能超出列表的索引范圍。

2、序列的嵌套:
如果序列中的元素是一個(gè)序列,也就是說(shuō),序列中嵌套著其它序列,這種情況叫作序列嵌套。

可以使用索引號(hào)訪問(wèn)列表T的第3個(gè)元素,由于這個(gè)元素恰巧也是一個(gè)序列,所以可以繼續(xù)使用索引號(hào)獲取內(nèi)層序列的任何一個(gè)元素。操作方法如下:序列名[外層索引號(hào)][內(nèi)層索引號(hào)]。

3、序列的截?。ㄇ衅僮鳎?br>
可以使用索引號(hào)獲取序列中的某一個(gè)元素,也可以使用索引號(hào)獲取序列中的某一段元素,也就是序列的截取,也叫“切片操作”。
操作方法如下:序列名[起始索引號(hào):結(jié)束索引號(hào):步長(zhǎng)],截取起始索引號(hào)到結(jié)束索引號(hào)之間的一段元素,步長(zhǎng)表示截取的元素間隔及截取結(jié)果的輸出方向,當(dāng)步長(zhǎng)為正數(shù)時(shí),正向輸出,步長(zhǎng)為負(fù)數(shù)是,逆向輸出。默認(rèn)步長(zhǎng)為1。
注意:截取的元素包含起始索引號(hào),不包含結(jié)束索引號(hào)(前包后不包)。

步長(zhǎng)為正數(shù)的切片操作:

訪問(wèn)單個(gè)元素的時(shí)候,還可以使用反向索引,那么,截取序列的時(shí)候,能不能也使用反向索引呢?

步長(zhǎng)為負(fù)數(shù)的切片操作:

注意:切片操作的時(shí)候,索引號(hào)可以越界,但是,在實(shí)際使用的時(shí)候,最好不要越界!
4、獲取序列長(zhǎng)度:
使用len()方法獲取序列長(zhǎng)度,即序列中的元素個(gè)數(shù)。

5、檢出元素是否包含在序列中:
使用比較運(yùn)算符in判斷某個(gè)元素是否包含在序列中。如果包含,返回True,否則返回False。

6、找出序列中的最大元素:
使用max()方法查找序列中的最大元素。
注意:當(dāng)序列中的所有元素都是數(shù)字時(shí),max()方法返回最大的數(shù)字;當(dāng)序列中所有的元素都是字符串類型時(shí),max()方法將按照Unicode編碼順序返回編碼最大的元素;當(dāng)序列中既有數(shù)字,又有其它類型的元素時(shí),max()方法是無(wú)法運(yùn)算的,會(huì)報(bào)錯(cuò)。

7、找出序列中的最小元素:
使用min()方法查找序列中的最小元素,使用方法與注意事項(xiàng),與max()方法一樣。

8、序列求和運(yùn)算:
使用sum()方法計(jì)算序列中所有元素的總和。既然是求和,要求序列中的所有元素是數(shù)字類型。

9、序列的加法運(yùn)算:
使用加法運(yùn)算符?+?可以將兩個(gè)或多個(gè)序列進(jìn)行加法運(yùn)算,注意:這里的加法運(yùn)算不是數(shù)字求和,而是合并操作。

10、序列的乘法運(yùn)算:
使用乘法運(yùn)算符?*?可以執(zhí)行乘法運(yùn)算,乘以數(shù)字幾表示將序列元素重復(fù)幾次。

四、列表的專有操作
1、增加元素:
(1)使用append()方法,將元素添加到列表末尾。
操作方法:列表名.append(obj),接收一個(gè)參數(shù),將對(duì)象obj添加到列表末尾。

(2)使用insert()方法,將元素添加到指定位置。
操作方法:列表名.insert(index, obj),接收兩個(gè)參數(shù),將對(duì)象obj插入到列表的index索引位置。

2、刪除元素:
(1)使用del命令刪除元素或整個(gè)列表。
操作方法:del? 列表名[索引號(hào)],刪除列表中指定索引號(hào)的元素。如果不加索引號(hào),直接使用:del??列表名,可以刪除整個(gè)列表。

(2)使用pop()方法,刪除并返回指定下標(biāo)(即索引號(hào))的元素。
操作方法:列表名.pop(index),刪除并返回下標(biāo)為index的元素,index默認(rèn)為-1,如果不指明index,默認(rèn)刪除并返回最后一個(gè)元素。

(3)使用remove()方法,刪除列表里第一次出現(xiàn)指定值的元素。
操作方法:列表名.remove(value),刪除列表中第一次出現(xiàn)值為value的元素,如果列表中沒(méi)有值為value的元素,就會(huì)報(bào)錯(cuò)。

(4)使用clear()方法,只刪除所有元素,保留空列表。
操作方法:列表名.clear(),不需要參數(shù)。

3、更新元素:
獲取到列表中的某個(gè)元素,直接賦值,就可更新該元素的值。
操作方法:列表名[index] =?value,將value賦值給列表索引號(hào)為index的元素。如果想同時(shí)更新多個(gè)元素的值,可以使用切片操作。

4、查找元素:
(1)使用index()方法,查找并返回目標(biāo)元素下標(biāo),如果沒(méi)有找到,會(huì)報(bào)錯(cuò)。
操作方法:列表名.index(value,?start, stop),在列表中查找值為value的元素,找到之后,返回目標(biāo)元素的索引號(hào)。start為開始查找位置,stop為結(jié)束查找位置,默認(rèn)start為0,stop為列表末尾。

(2)使用count()方法,統(tǒng)計(jì)并返回元素出現(xiàn)的次數(shù)。
操作方法:列表名.count(value),統(tǒng)計(jì)值為value的元素在列表中出現(xiàn)的次數(shù),如果value不存在,返回0。

5、列表排序:
(1)使用sort()方法,對(duì)列表進(jìn)行原地排序,不返回新列表。
操作方法:列表名.sort(cmp=None, key=None, reverse=False),cmp和key參數(shù)不做要求,reverse代表是否翻轉(zhuǎn),默認(rèn)步翻轉(zhuǎn)。
注意1:原地排序是在原列表地址上進(jìn)行排序操作,是直接對(duì)原列表進(jìn)行操作,所以,原列表的值就成了排序后的值。
注意2:與max()和min()方法一樣,sort()方法也要求列表中的元素為同一類型。

(2)使用sorted()方法排序,會(huì)生成新列表。
操作方法:sorted(列表名,?cmp=None, key=None, reverse=False),參數(shù)cmp和key不做要求,reverse表示是否對(duì)排序結(jié)果進(jìn)行翻轉(zhuǎn),默認(rèn)不翻轉(zhuǎn),注意事項(xiàng)與sort()方法一樣。

五、模擬考題








-->參考答案往下翻<--
<完>

-->參考答案<--
1~5:BABDC
6~8:BBC