This can probably best be shown:

>>> a = [1, 2, 3] >>> id(a) 45556280 >>> del a[:] >>> id(a) 45556280 >>> b = [4, 5, 6] >>> id(b) 45556680 >>> b = [] >>> id(b) 45556320

When you do a[:] you are referring to all elements within the list "assigned" to a . The del statement removes references to objects. So, doing del a[:] is saying "remove all references to objects from within the list assigned to a ". The list itself has not changed. We can see this with the id function, which gives us a number representing an object in memory. The id of the list before using del and after remains the same, indicating the same list object is assigned to a .

On the other hand, when we assign a non-empty list to b and then assign a new empty list to b , the id changes. This is because we have actually moved the b reference from the existing [4, 5, 6] list to the new [] list.

Beyond just the identity of the objects you are dealing with, there are other things to be aware of:

>>> a = [1, 2, 3] >>> b = a >>> del a[:] >>> print a [] >>> print b []