It seems so "dirty" emptying a list in this way:
while len(alist) > 0 : alist.pop()
This actually removes the contents from the list, not replaces the old label with a new empty list
lst1 = [1, 2, 3] lst2 = lst1 del lst1[:] print(lst2)
For the sake of completeness, slice assignment achieves the same effect:
lst[:] = 
and can be used to shrink a part of the list while replacing a part at the same time (but is out of scope of the question).
Note that doing
lst =  does not empty the list, just creates a new object and binds it to the variable
lst, but the old list will still have the same elements, and effect will be apparent if it had other variable bindings.