Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between list.pop() and list = list[:-1]

Tags:

python

list

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

Is there any difference between the above methods to remove the last element from a list?

like image 656
bmpasini Avatar asked Jun 22 '19 00:06

bmpasini


Video Answer


1 Answers

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].

like image 69
ggorlen Avatar answered Oct 13 '22 10:10

ggorlen