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

从列表中删除最后一个元素的上述方法有什么区别吗?

最佳答案

是的。 pop 是 O(1) 并改变原始列表,而 slice 是 O(n) 并创建列表的副本。不太正式, pop 方法是对列表末尾元素的操作,在 CPython 中定义为对 list_resize(self, Py_SIZE(self) - 1); 的调用。这不会遍历整个结构。

另一方面, list_slice 分配一个新列表并在旧列表中从头到尾循环遍历条目 - 1,将每个项目的引用复制到新列表中。

如果您要删除列表的最后一个元素,请使用 popdel a[-1]

关于python - list.pop() 和 list = list[ :-1] 的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56711615/

10-12 22:31