2.3.5 删除列表元素
本节介绍如何从列表对象中删除元素。删除列表元素的方法共有3种,即使用remove()、pop()和del语句这3种方法。
1.使用remove()方法删除列表元素
如果我们知道待删除元素的名称,而不知道其所在的索引位置,可以使用remove()方法。
如图2-37所示,通过向列表对象的remove()方法传入参数,可以删除列表中的元素。
图2-37 使用remove()方法删除列表元素
如果删除一个不存在的列表元素会出错吗?如图2-38所示,当试图删除一个在列表对象中不存在的元素时,Python将给出一条“ValueError: list.remove(x): x not in list”(即“值错误:要删除的元素不在列表中”)的提示信息。在编写脚本的时候一定要注意这个问题,要保证删除的元素在列表对象中,否则将会出现异常,终止程序的运行。
图2-38 使用remove()方法删除列表中不存在的元素
2.使用del语句删除列表元素
如果要根据列表元素的索引位置删除一个列表元素或者要删除整个列表,那么可以使用del语句。注意,del是一条语句而并非列表方法,所以使用时,不用在它的后边加上小括号。
下面给出一个例子。
List2=['金鱼','鲨鱼','黄花鱼'] del?List2[1] print(List2) |
我们对上面的代码做一个简单分析,List2中共包括3个元素,使用del语句删除索引为“1”的元素,即“鲨鱼”,而后输出List2列表,如图2-39所示。
图2-39 使用del语句删除列表中指定索引的元素
从图2-39中,我们可以看到删除“鲨鱼”后的List2只包含“金鱼”和“黄花鱼”这两个元素。
如果使用del语句删除一个不存在的索引元素,是不是也会出现异常呢?
如图2-40所示,当使用del语句删除列表中不存在的索引元素时,同样会报错,所以在使用时一定要注意这个问题。
图2-40 使用del语句删除列表中不存在的索引元素
使用del语句不仅可以删除指定索引位置的元素,还可以删除整个列表。
如图2-41所示,使用del语句可以将整个列表完全删除,列表被删除后,再次输出该列表时,将会给出“NameError:'List2' is not defined”的错误提示信息。
3.使用pop()方法删除列表元素
除了使用remove()方法和del语句删除列表元素外,使用pop()方法也可以实现删除列表元素的目的。
在使用pop()方法时,如果不指定参数,则删除列表的最后一个元素;如果将列表中某个索引位置作为参数传给pop()方法,则删除该位置的列表元素,如图2-42所示。
图2-41 使用del语句删除整个列表
图2-42 使用pop()方法删除列表元素
如图2-43所示,当使用pop()方法删除列表中不存在的索引元素时,同样会报错,所以在使用时一定要注意这个问题。
图2-43 使用pop()方法删除列表中不存在的索引元素
2.3.6 列表元素计数
以前我们在应用其他语言统计一个数组或者一个字符串有多少个相同的元素时,通常需要使用遍历、计数,但是在Python中,要统计列表中某个元素出现了几次,一条语句就可以实现。
如图2-44所示,可以使用List2.count('金鱼')这条语句用来统计“金鱼”在List2列表中共出现了几次,从输出结果可以看到,共出现了4次。
图2-44 列表元素计数方法
在Python中,在统计列表元素出现次数时,只需要使用列表名称.count(元素名称)即可。有的读者可能会觉得如果输出时带上一些文字描述会更好。这非常对。这就涉及前面章节讲过的类型转换问题,因为List2是一个列表对象,所以它需要转换成字符串类型才能和字符串进行拼接。List2.count('金鱼')的返回值为整型,若要和字符串拼接到一起,同样需要做一个类型转换。这里会用到str()函数,具体方法如图2-45所示。
图2-45 带文本描述的列表元素计数方法
如果不应用str()函数进行类型转换,则会出现图2-46所示的错误提示信息。
图2-46 未进行类型转换而引起异常
2.3.7 列表元素的索引位置
有的时候列表中的元素非常多,如果通过逐去数某个元素所在索引位置就会非常麻烦。那么,Python是否提供了关于列表元素所在索引位置的方法了呢?可以通过使用列表名称.index(元素名称)的方法来获取该元素在列表中的索引位置。
如图2-47所示,使用语句List2.index('黄花鱼'),就返回了“黄花鱼”在List2中的索引位置2。
图2-47 应用列表元素索引的示例代码
如果列表中有多个符合要求的元素,我们应该怎样获得指定的元素索引位置呢?这是一个非常好的问题,正因为考虑到这个问题,方法index()还提供了两个参数,限定在某个索引范围内进行搜索。
如图2-48所示,如果我们限定只搜索列表中从第3个索引位置到第7个索引位置的“黄花鱼”,则返回值为6。如果我们将索引的范围扩大到从第0个索引位置到第7个索引位置,那么应该有两个符合条件的索引位置,即第2个索引位置和第6个索引位置,返回值应该是什么呢?
图2-48 应用限定索引范围的列表元素索引的示例代码1
从图2-49中,可以看到返回值为第一个符合检索条件的索引位置,可以看到返回值为第一个符合检索条件的索引位置,而没有返回两个值。
图2-49 应用限定索引范围的列表元素索引的示例代码2
2.3.8 列表长度及反转
2.3.6节讲解了如何实现列表元素的反转,那么Python中有没有列表方法可以实现列表元素的反转呢?
如图2-50所示,可以应用列表名称.reverse()实现对列表中元素的反转。
图2-50 反转列表元素
可以通过len()函数来获取列表中元素的个数,也就是列表的长度,如图2-51所示。
图2-51 使用len()函数获得列表长度
列表对象还有很多其他的方法,如果要知道列表对象的所有方法,可以使用dir(list)获取相关信息,如图2-52所示。
图2-52 列表对象提供的所有方法