Python+Excel办公自动化一本通
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.2 访问和操作列表

本节主要介绍如何访问和操作列表,增、删、查、改和截取都是很常见的操作。

4.2.1 元素的增、删、查、改

增、删、查、改是列表最基本的操作,下面通过代码清单4-5进行说明。

代码清单4-5:列表的增、删、查、改

上述代码的功能包括以下几点。

• 代码①处修改第五个元素的值。

• 代码②处删除列表中的一个元素,对于正向下标,后续的元素的下标都会减1。

• 代码③处在列表尾部添加元素。

• 代码④处将元素插入指定的下标之内,对于正向下标,后续的元素的下标都会加1。

• 代码⑤处根据值找到其在列表中的位置,只是index函数需要注意的是,如果找不到对应的元素,那么它将会发生异常,所以为了避免这些异常,可以事先通过if语句判定元素是否在列表之内。

• 代码⑥处删除列表,和代码②处不同的是,它是删除整个列表的定义,而代码②处通过下标删除列表中的某个元素,在代码⑥处之后,将无法在后续代码中使用列表lst。

4.2.2 截取子列表

和字符串数据类型一样,列表也能截取子列表。截取子列表的方法和截取子串的方法比较接近,下面通过代码清单4-6介绍截取子列表的方法。

代码清单4-6:截取子列表

只要掌握好列表的下标,再参考字符串的子串的截取,理解上述代码就比较容易。

4.2.3 列表的嵌套

所谓列表的嵌套,就是列表中所包含的元素也带有列表,如下所示:

列表arr中所有的元素都是列表,列表arr2中的元素既有列表也有数字。把列表元素中含有列表的列表称为嵌套列表。

下面通过代码清单4-7来说明如何访问嵌套列表元素和遍历嵌套列表。

代码清单4-7:访问嵌套列表元素和遍历嵌套列表

对于包含两重嵌套的列表来说,可以使用类似于arr[1]的方式来访问元素,返回的是1个元素,当然它也是一个列表,而arr[2][1]访问的是列表arr的第三个元素中的第二个元素。包含两重嵌套的列表可以使用两个for循环进行遍历,整体还是比较简单的。运行上述代码得到的输出结果如下:

代码清单4-7中的列表arr的所有元素都是列表,但是也存在列表中的元素有些是数字,有些是列表,而有些是字符串的可能,此时应当如何遍历列表呢?使用2.2节提到的type函数可以返回数据的类型,所以可以使用该函数来辨别元素的数据类型,从而根据不同的情况进行处理。下面通过代码清单4-8进行说明。

代码清单4-8:遍历复杂数据类型的嵌套列表

上述代码中的arr是一个具有复杂数据类型的列表,此时遍历该列表就需要根据其元素数据类型进行处理。在代码①处使用type函数来判断元素的类型,如果是列表则用嵌套循环进行下一步的访问,如果不是列表则直接读取元素值,这样就能遍历列表。

4.2.4 列表的其他操作

在Python中还可以对列表进行其他的操作,包括组合列表(+)、判断是否是列表元素(in)、重复列表(*)和迭代(iter函数)等,下面通过代码清单4-9进行说明。

代码清单4-9:列表的其他操作

上述代码的功能主要包括以下几点。

• 代码①处:使用运算符“*”使列表重复3次。

• 代码②处:使用运算符“+”使列表list2添加到列表list1的尾部。

• 代码③处:通过iter函数获取列表list1的迭代器(it),第一次调用it的next函数就返回列表list1的第一个元素,第二次调用it的next函数就返回列表list1的第二个元素,以此类推。

• 代码④处:通过迭代器进行循环,访问列表list2。

• 代码⑤处:通过in运算符判断列表中是否存在对应的元素。

运行上述代码得到的输出结果如下: