2 删除list中的元素
使用remove()、pop()或者clear()删除list中的元素。
2.1 使用remove()方法删除list中元素
2.1.1 remove()方法的语法
remove()方法的语法如下所示:
list.remove(value,/)
其中,value表示要删除的值。
2.1.2 相关代码
使用remove()方法删除list中元素的代码,如下所示:
>>> list1 = [1,2,3,4,5]
>>> list1.remove(2)
>>> print(list1)
[1, 3, 4, 5]
其中,使用remove()方法删除list1中值为2的元素。
2.1.3 注意事项
(1)remove()删除的是list中第一个出现的元素
remove()方法删除的是列表中第一出现的元素,代码如下所示:
>>> list1 = [1,2,3,4,5,2]
>>> list1.remove(2)
>>> print(list1)
[1, 3, 4, 5, 2]
其中,list1中包含两个值为2的元素,使用remove()方法删除值为2的元素时,索引为1的元素被删除,而索引是5的元素2没有被删除。
(2)当列表中不包含要删除的元素时,会显示异常
代码如下所示:
>>> list1
[1, 3, 4, 5, 2]
>>> list1.remove(6)
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
list1.remove(6)
ValueError: list.remove(x): x not in list
当要删除list1中值为6的元素时,因为list1中不包含改元素,因此程序会显示异常,该异常的信息是“值错误:list.remove(x):x没有在列表中”。
2.2 使用pop()方法删除list中元素
2.2.1 pop()方法的语法
pop()方法的语法如下所示:
list.pop(index=-1,/)
其中,参数index表示要删除的元素对应的索引,其默认值是-1,即默认删除的是列表中最后一个元素。pop()方法的返回值是要删除的元素值。
2.2.2 相关代码
使用pop()方法删除列表中元素的相关代码如下所示:
>>> list1
[1, 3, 4, 5, 2]
>>> a = list1.pop()
>>> print(a)
2
>>> print(list1)
[1, 3, 4, 5]
其中,pop()没有指定要删除元素的索引值,因此默认删除的是列表中的最后一个元素,并且将该元素保存在了变量a中。指定要删除元素索引值的代码如下所示:
>>> b = list1.pop(1)
>>> print(b)
3
>>> print(list1)
[1, 4, 5]
此时,通过pop()删除的是列表中索引为1的元素,并将该元素保存在变量b中。
2.2.3 注意事项
通过pop()删除指定元素时,其索引值不能超过列表中元素的最大索引值,否则程序会显示异常,代码如下所示。
>>> list1.pop(4)
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
list1.pop(4)
IndexError: pop index out of range
>>>
其中,list1元素的最大索引值是2,此时将pop()方法的参数设置为4,超出了其索引最大值。此时的异常信息为“索引错误:pop的索引超出了范围”。
2.3 使用clear()方法删除list中元素
clear()方法的作用是删除list中的所有元素,代码如下所示。
>>> print(list1)
[1, 4, 5]
>>> list1.clear()
>>> print(list1)
[]
2.4 使用del函数删除列表中的元素或列表
使用Python的内置函数del也可以删除列表中的元素或列表。
2.4.1 使用del删除列表中的元素
使用del函数,通过列表名和索引值来删除列表中指定的元素,代码如下所示。
>>> list1 = [1,2,3,4,5]
>>> del list1[1]
>>> print(list1)
[1, 3, 4, 5]
2.4.2 使用del删除列表
可以使用del函数删除整个列表,代码如下所示。
>>> del list1
>>> print(list1)
Traceback (most recent call last):
File "<pyshell#30>", line 1, in <module>
print(list1)
NameError: name 'list1' is not defined. Did you mean: 'list'?
其中,del不但将list1中元素全部删除,而且还删除掉了list1本身。此时打印list1中元素时,错误信息为“名称错误:list1没有定义”。