购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.2 列表

列表的内容是可变的(mutable),有很多比较好用、独特的方法,本节将一一进行介绍。

2.2.1 更新列表

序列所拥有的特性,列表都有。前面所介绍的有关序列的操作(如索引、分片、相加、乘法等)都适用于列表。本节将介绍一些序列中没有而列表中有的方法,如元素赋值、增加元素、删除元素、分片赋值和列表方法等。下面将逐一进行介绍。

1.元素赋值

赋值语句是最简单地改变列表的方式,比如a=2就属于一种改变列表的方式。

元素赋值操作如下:

由输出结果可以看出,可以根据索引下标编号对列表中某个元素重新赋值。

在交互模式下输入如下:

由输出结果可以看出,可以对一个列表中的元素赋予不同类型的值。

对列表赋值时,如果使用的索引下标编号超过了列表中的最大索引下标编号,那么是否可以赋值成功,结果是怎样的?继续对group列表进行操作,group列表中当前有5个元素,最大索引下标是4,即group[4],这里尝试对group[5]赋值,在交互模式下输入:

在上面的示例中,group列表的最大索引下标编号是4,当给索引下标编号为5的元素赋值时出错,错误提示的信息是:列表索引超出范围。

提示

不能为一个不存在元素的位置赋值,若强行赋值,则程序会报错。

2.增加元素

由上面元素赋值的示例可以看出,不能为一个不存在的元素位置赋值,列表一旦创建,就不能再通过赋值方式向这个列表中增加元素了。

在交互模式下输入如下内容:

在Python中提供了一个append()方法,用于在列表末尾添加新对象。append()方法的语法格式如下:

     list.append(obj)

在此语法中,list代表列表,obj代表需要添加到list列表末尾的对象。

使用append()方法,可以向列表中增加各种类型的值。

继续操作group列表,append()使用的示例如下:

3.删除元素

在交互模式下输入如下内容:

上面的示例使用del删除了group列表中的第7个元素,删除元素后,原来有7个元素的列表变成有6个元素的列表。

使用del除了可以删除列表中的字符串外,也可以删除列表中的数字。

继续操作group列表,在交互模式下输入如下内容:

4.分片赋值

分片赋值是列表一个强大的特性。

在继续往下之前需要补充一点:如前面所说,通过a=list()的方式可以初始化一个空的列表。若写成如下形式,则list()方法会将字符串str转换为对应的列表,str中的每个字符将被转换为一个列表元素,包括空格字符:

     list(str)或a=list(str)

list()方法一个功能是根据字符串创建列表,有时这么操作会很方便。list()方法不仅适用于字符串,也适用于其他类型的序列。

示例中首先将字符串“北京将举办2022年的冬奥会”使用list()方法转变为列表,接着将字符串“welcome to beijing”使用list()方法转变为列表,并将结果赋值给greeting列表。最后通过分片操作变更greeting列表中索引下标编号为11到18的元素,即将beijing替换为china。

再看如下示例:

首先给greeting列表赋值['h','i'],再通过列表的分片赋值操作将编号1之后的元素变更,即将编号1位置的元素替换为e,但是编号2之后没有元素,那么怎么能操作成功,并且一直操作到编号为4的位置呢?

这就是列表分片赋值另一个强大的功能:可以使用与原列表不等长的列表将分片进行替换。示例如下:

由输出结果可以看出,使用列表的分片赋值功能在不替换任何原有元素的情况下在任意位置插入了新元素。

分片赋值中也提供了类似删除的功能,示例如下:

从上面的输出结果可以看出,通过分片赋值的方式将想要删除的元素赋值为空列表可以达到删除对应元素的效果,并且列表中的分片删除和分片赋值一样可以对列表中任意位置的元素进行操作。

2.2.2 列表方法

方法是与对象(可能是列表、数字,也可能是字符串或其他类型的对象)有紧密联系的函数,调用语法格式如下:

     对象.方法(参数)

比如前面用到的append()方法就是这种形式的,由列表方法的语法和前面append()方法的示例可知,方法的调用方式是将对象放到方法名之前,两者之间用一个点号隔开,方法后面的括号中可以根据需要带上参数。除了语法上有一些不同,方法调用和函数调用很相似。

列表中有append()、extend()、index()、sort()等常用的方法,下面逐一进行介绍。

1.append()

append()方法的语法格式如下:

     list.append(obj)

在此语法中,list代表列表,obj代表待添加的对象。

append()方法在前面已经介绍过,该方法的功能是在列表的末尾添加新对象。

2.extend()

extend()方法的语法格式如下:

     list.extend(seq)

在此语法中,list代表被扩展列表,seq代表需要追加到list中的元素列表。

extend()方法用于在列表末尾一次性追加另一个列表中的多个值(用新列表扩展原来的列表),也就是列表的扩展。

在extend()方法的使用过程中,list列表会被更改,但不会生成新的列表。

使用该方法的示例如下:

3.sort()

sort()方法的语法格式如下:

     list.sort(func)

在此语法中,list代表列表,func为可选参数。如果指定该参数,就会使用该参数的方法进行排序。

sort()方法用于对原列表进行排序,如果指定参数,就使用参数指定的比较方法进行排序。

使用该方法的示例如下:

由上面输出的结果可知,sort()方法改变了原来的列表,即sort()方法是直接在原来的列表上做修改的,而不是返回一个已排序的新列表。

在Python中,sort()方法有一个有同样功能的函数——sorted函数。该函数可以直接获取列表的副本进行排序,sorted函数的使用方式如下:

sorted函数可以用于任何序列,返回结果都是一个列表,例如:

4.clear()

clear()方法的语法格式如下:

     list.clear()

在此语法中,list代表列表,不需要传入参数。

clear()方法用于清空列表,类似于del a[:],示例如下:

由操作结果可以看出,clear()方法会清空整个列表。调用该方法进行清空操作很简单,但是要小心,因为一不小心就可能把整个列表都清空了。

5.count()

count()方法的语法格式如下:

     list.count(obj)

在此语法中,list代表列表,obj代表列表中统计的对象。

count()方法用于统计某个元素在列表中出现的次数,示例如下:

6.insert()

insert()方法的语法格式如下:

     list.insert(index,obj)

在此语法中,list代表列表,index代表对象obj需要插入的索引位置,obj代表要插入列表中的对象。

insert()方法用于将对象插入列表,示例如下:

由上面的操作过程及输出结果可以看出,用insert()方法操作列表是非常方便的。 7OuZZBKuzSIjMl8vaE+zCQR6xSTGxc6lZH6ePSw1/cuu2nwd+XgbO1J4Y1PwFNQ1

点击中间区域
呼出菜单
上一章
目录
下一章
×