How can I empty the contents of a list?

Question

If I have a list containing items, how can I empty or delete all the contents of the list?

Answer

There are two ways to empty an existing list. The first way is to just assign the list variable to an empty list. In this case, the old list and its contents are automatically deleted by Python. This is shown in the following code example.

list1 = [ 1, 2, 3, 4, 5, 6, 7 ]
list1 = []

The second method is to use the del() function to delete all the elements of the list. This forces the removal of all the items immediately instead of letting Python delete the contents at some time of its choosing. Both methods produce the same end result which is that the list will be empty of contents.

list2 = [ 10, 20, 30, 40, 50, 60, 70 ]
del list2[:]
22 Likes

In the second example above it is important to include the slice subscript, else the variable itself will be deleted.

>>> list2 = [ 10, 20, 30, 40, 50, 60, 70 ]
>>> del list2[:]
>>> list2
[]
>>> isinstance(list2, list)
True
>>> list2 = [ 10, 20, 30, 40, 50, 60, 70 ]
>>> del list2
>>> isinstance(list2, list)
Traceback (most recent call last):
  File "<pyshell#58>", line 1, in <module>
    isinstance(list2, list)
NameError: name 'list2' is not defined
>>> 

Clearly, the first example is the preferred approach, assign an empty list, since it is not likely to ever throw a wrench into the proceedings (a bug that could be tricky to find).

14 Likes

what if we want to delete a single or some specific elements from the list? how can we do that?

1 Like

We have two choices,

  • delete by value
  • delete by index

Which is it you wish to do?

1 Like

Could you please explain both? I want to learn.

Have you explored the docs.python.org material, yet, just from a familiarization perspective. It is a good first step. Take the time to look things over then come back and start learning how to put the pieces together. It’s not a novel; just focus on the parts your are most concerned with at the time.

How to delete item or items from a list python

1 Like

Does this mean, that when we use :

list1 = [1,2,3,4]
list1 =

delete’s the list1 i.e. python does not anymore remember us creating one?

The first entry has list1 referencing a list. That reference remains intact until the variable is given a new reference, the empty list. It no longer references the populated list, which if no other references exist will be garbage collected and the memory re-allocated.

It appears as though the second assignment has just emptied the list, but that is not so. If we check the ID of each reference we will see they are not the same object.

Consider,

>>> list1 = [1, 2, 3, 4]
>>> id(list1)
48786408
>>> del list1[:]
>>> list1
[]
>>> id(list1)
48786408
>>> list1[:] = [1, 2, 3, 4]
>>> list1
[1, 2, 3, 4]
>>> id(list1)
48786408
>>> 

Notice that as long we operate on the contents of the list, the ID remains the same, even when the list is emptied (but not replaced).

Now lets see what happens when we replace the list.

>>> list1 = []
>>> id(list1)
48829504
>>> 

It now references a completely new object. As mentioned, if no other references exist within the program to the original object, the earlier ID will no longer exist.

3 Likes