Increasing the size of the container can be an expensive operation, as it may require moving a lot of things in memory. Thus, Python almost always allocates more memory than is required for the current contents of the list, which allows any individual addition to the list to have very good chances of being executed without having to move the memory. For similar reasons, a list may not free up memory for deleted items at once or never.
However, if you delete all elements at once using the slice assignment:
a[:] = []
which looks like reset. However, this is an implementation detail.
source share