在 Python 列表中的 del、remove 和 pop 方法区别的介绍
Aliaksei Yursha
2023年1月30日
2019年12月26日
就跟我们知道的一样,Python 提供了几种方法来实现同一效果。
如果需要从列表中删除元素,则可以使用 list.remove()
或 list.pop()
函数或内置 del
语句。
在下面的示例中,我们将对每种方法进行介绍,并讨论它们之间的差异和取舍。
Python 列表按值删除
list.remove()
删除列表中的第一个值等于传入的参数的元素。使用此方法时,通常不知道或不在乎要删除的元素的索引是什么。
>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.remove('Cindy')
>>> names
['Bob', 'Noah']
使用此方法时要小心。如果列表中不存在你要删除的元素,则 Python 运行时将抛出 ValueError
。
>>> names = ['Bob', 'Noah']
>>> names.remove('Cindy')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
要解决此问题,你必须先检查列表中是否存在该元素,然后再使用 list.remove()
来删除它。
>>> names = ['Bob', 'Noah']
>>> if 'Cindy' in names:
... names.remove('Cindy')
...
>>>
Python 列表按索引删除
如果知道要删除的元素的索引,则可以使用 list.pop()
方法。
>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.pop(1)
'Cindy'
>>> names
['Bob', 'Noah']
list.pop()
删除指定索引处的元素并返回它。
如果你不给赋予任何索引给 list.pop()
,它将删除列表的最后一个元素。
>>> names = ['Bob', 'Cindy', 'Noah']
>>> names.pop()
'Noah'
>>> names
['Bob', 'Cindy']
Python 列表删除 del
语句
按索引从列表中删除元素的另一种方法是使用 del
内置语句。del
语句与 list.pop()
方法不同,该语句不返回删除的值。
>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[1]
>>> names
['Bob', 'Noah']
del
语句也比 list.pop()
更加灵活。你可以使用它从列表中指定要删除值的索引范围。
>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[0:2]
>>> names
['Noah']
你也可以使用它清除整个列表。
>>> names = ['Bob', 'Cindy', 'Noah']
>>> del names[:]
>>> names
[]
从上面可以看到,每种方法的使用方法都略有不同。尽管如此,如果你只需要从列表中删除单个元素而不记住其值,那么每种方法都可以来使用。