删除、删除和弹出列表的区别

新手上路,请多包涵

这三种从列表中删除元素的方法有什么区别吗?

 >>> a = [1, 2, 3]
>>> a.remove(2)
>>> a
[1, 3]

>>> a = [1, 2, 3]
>>> del a[1]
>>> a
[1, 3]

>>> a = [1, 2, 3]
>>> a.pop(1)
2
>>> a
[1, 3]

原文由 sachin irukula 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 253
2 个回答

从列表中删除元素的三种不同方法的效果:

remove 删除第 一个 匹配 _值_,而不是特定索引:

 >>> a = [0, 2, 3, 2]
>>> a.remove(2)
>>> a
[0, 3, 2]

del 删除特定索引处的项目:

 >>> a = [9, 8, 7, 6]
>>> del a[1]
>>> a
[9, 7, 6]

pop 删除特定索引处的项目并将其返回。

 >>> a = [4, 3, 5]
>>> a.pop(1)
3
>>> a
[4, 5]

它们的错误模式也不同:

 >>> a = [4, 5, 6]
>>> a.remove(7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>> del a[7]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
>>> a.pop(7)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: pop index out of range

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用 del 按索引删除元素, pop() 如果需要返回值则按索引删除它,以及 remove() 按值删除元素最后一个要求搜索列表,并引发 ValueError 如果列表中没有出现这样的值。

n 元素列表中删除索引 i 时,这些方法的计算复杂度为

del     O(n - i)
pop     O(n - i)
remove  O(n)

原文由 Sven Marnach 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题