在 Python 列表中的 del、remove 和 pop 方法区别的介绍

  1. Python 列表按值删除
  2. Python 列表按索引删除
  3. Python 列表删除 del 语句

就跟我们知道的一样,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
[]

从上面可以看到,每种方法的使用方法都略有不同。尽管如此,如果你只需要从列表中删除单个元素而不记住其值,那么每种方法都可以来使用。

相关文章 - Python List

  • 如何在 Python 中生成一个列表的所有排列
  • 如何在 Python 中创建具有特定大小的列表
  • comments powered by Disqus