Yes. pop
is O(1) and mutates the original list, while slice is O(n) and creates a copy of the list. Less formally, the pop
method is an operation on the element at the end of the list and is defined in CPython as a call to list_resize(self, Py_SIZE(self) - 1);
. This doesn't traverse the entire structure.
On the other hand, list_slice
allocates a new list and loops over the entries in the old list ranging from the beginning to the end - 1, copying references to each item to the new list.
If what you're trying to do is remove the last element of the list, use pop
or del a[-1]
.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…