Pyhton少儿编程(6)可变序列——列表
一、什么是列表
列表是Python中内置的有序的、可变序列。列表中的所有元素用逗号分隔,所有元素放在一对中括号[]里。
所谓序列,是指一块可以存放多个数值的连续内存空间,这些值按照一定顺序排列,可通过每个值所在的位置编号(即“索引”)访问它们。
二、列表的创建
常见的创建方式有两种:
1、直接创建。将元素用逗号分隔,并且用中括号[]括起来就可以了。

2、用list命令创建。list()既可以创建列表,也可以将元组或者字符串转换成列表类型。

三、序列的常用操作
1、序列的访问:
序列中的每一个元素都是有序号的,我们将这里的序号称之为“索引”。序列的索引可以是正向的,也可以是反向的。正向索引时,第一个元素的序号是0,从左往右的序号依次为:0, 1, 2, 3, 4, 5...。反向索引时,第一个元素的序号是-1,从右往左的序号依次为:-1, -2, -3, -4, -5...。

操作方法如下:序列名[索引号]。例如:访问列表test_list的第一个元素,记作:test_list[0];访问第四个元素,记作:test_list[3];访问倒数第二个元素,记作:test_list[-2];访问倒数第六个元素,记作:test_list[-6]。
注意:访问获取元素的时候,索引号不能越界!也就是说,索引号不能能超出列表的索引范围。

2、序列的嵌套:
如果序列中的元素是一个序列,也就是说,序列中嵌套着其它序列,这种情况叫作序列嵌套。

可以使用索引号访问列表T的第3个元素,由于这个元素恰巧也是一个序列,所以可以继续使用索引号获取内层序列的任何一个元素。操作方法如下:序列名[外层索引号][内层索引号]。

3、序列的截取(切片操作):
可以使用索引号获取序列中的某一个元素,也可以使用索引号获取序列中的某一段元素,也就是序列的截取,也叫“切片操作”。
操作方法如下:序列名[起始索引号:结束索引号:步长],截取起始索引号到结束索引号之间的一段元素,步长表示截取的元素间隔及截取结果的输出方向,当步长为正数时,正向输出,步长为负数是,逆向输出。默认步长为1。
注意:截取的元素包含起始索引号,不包含结束索引号(前包后不包)。

步长为正数的切片操作:

访问单个元素的时候,还可以使用反向索引,那么,截取序列的时候,能不能也使用反向索引呢?

步长为负数的切片操作:

注意:切片操作的时候,索引号可以越界,但是,在实际使用的时候,最好不要越界!
4、获取序列长度:
使用len()方法获取序列长度,即序列中的元素个数。

5、检出元素是否包含在序列中:
使用比较运算符in判断某个元素是否包含在序列中。如果包含,返回True,否则返回False。

6、找出序列中的最大元素:
使用max()方法查找序列中的最大元素。
注意:当序列中的所有元素都是数字时,max()方法返回最大的数字;当序列中所有的元素都是字符串类型时,max()方法将按照Unicode编码顺序返回编码最大的元素;当序列中既有数字,又有其它类型的元素时,max()方法是无法运算的,会报错。

7、找出序列中的最小元素:
使用min()方法查找序列中的最小元素,使用方法与注意事项,与max()方法一样。

8、序列求和运算:
使用sum()方法计算序列中所有元素的总和。既然是求和,要求序列中的所有元素是数字类型。

9、序列的加法运算:
使用加法运算符 + 可以将两个或多个序列进行加法运算,注意:这里的加法运算不是数字求和,而是合并操作。

10、序列的乘法运算:
使用乘法运算符 * 可以执行乘法运算,乘以数字几表示将序列元素重复几次。

四、列表的专有操作
1、增加元素:
(1)使用append()方法,将元素添加到列表末尾。
操作方法:列表名.append(obj),接收一个参数,将对象obj添加到列表末尾。

(2)使用insert()方法,将元素添加到指定位置。
操作方法:列表名.insert(index, obj),接收两个参数,将对象obj插入到列表的index索引位置。

2、删除元素:
(1)使用del命令删除元素或整个列表。
操作方法:del 列表名[索引号],删除列表中指定索引号的元素。如果不加索引号,直接使用:del 列表名,可以删除整个列表。

(2)使用pop()方法,删除并返回指定下标(即索引号)的元素。
操作方法:列表名.pop(index),删除并返回下标为index的元素,index默认为-1,如果不指明index,默认删除并返回最后一个元素。

(3)使用remove()方法,删除列表里第一次出现指定值的元素。
操作方法:列表名.remove(value),删除列表中第一次出现值为value的元素,如果列表中没有值为value的元素,就会报错。

(4)使用clear()方法,只删除所有元素,保留空列表。
操作方法:列表名.clear(),不需要参数。

3、更新元素:
获取到列表中的某个元素,直接赋值,就可更新该元素的值。
操作方法:列表名[index] = value,将value赋值给列表索引号为index的元素。如果想同时更新多个元素的值,可以使用切片操作。

4、查找元素:
(1)使用index()方法,查找并返回目标元素下标,如果没有找到,会报错。
操作方法:列表名.index(value, start, stop),在列表中查找值为value的元素,找到之后,返回目标元素的索引号。start为开始查找位置,stop为结束查找位置,默认start为0,stop为列表末尾。

(2)使用count()方法,统计并返回元素出现的次数。
操作方法:列表名.count(value),统计值为value的元素在列表中出现的次数,如果value不存在,返回0。

5、列表排序:
(1)使用sort()方法,对列表进行原地排序,不返回新列表。
操作方法:列表名.sort(cmp=None, key=None, reverse=False),cmp和key参数不做要求,reverse代表是否翻转,默认步翻转。
注意1:原地排序是在原列表地址上进行排序操作,是直接对原列表进行操作,所以,原列表的值就成了排序后的值。
注意2:与max()和min()方法一样,sort()方法也要求列表中的元素为同一类型。

(2)使用sorted()方法排序,会生成新列表。
操作方法:sorted(列表名, cmp=None, key=None, reverse=False),参数cmp和key不做要求,reverse表示是否对排序结果进行翻转,默认不翻转,注意事项与sort()方法一样。

五、模拟考题








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

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

