Delete a list element by value in Python

David Y.
jump to solution

The Problem

In Python, how can I delete a list item by its value rather than its position?

The Solution

Python’s list.remove method provides this functionality. Given a value, it will search for that value in the list and delete the first instance it finds. If the supplied value is not found in the list, it raises a ValueException error. For example:

mylist = ['a', 'b', 'c', 'c', 'd']
mylist.remove('c')  # will remove the first 'c'
print(mylist)  # will print ['a', 'b', 'c', 'd']

mylist.remove('c')  # will remove the remaining 'c'
print(mylist)  # will print ['a', 'b', 'd']

try:
    mylist.remove('e')  # will throw an exception
except ValueError:
    print('Element to delete not found in list')

If you would like to remove all elements with a given value from a list, not just the first one, you can do this efficiently by rebuilding the list without those elements in a list comprehension:

mylist = ['a', 'b', 'c', 'c', 'd']
mylist = [item for item in mylist if item != 'c']  # rebuild the list without 'c's
print(mylist)  # will print ['a', 'b', 'd']

Considered "not bad" by 4 million developers and more than 150,000 organizations worldwide, Sentry provides code-level observability to many of the world's best-known companies like Disney, Peloton, Cloudflare, Eventbrite, Slack, Supercell, and Rockstar Games. Each month we process billions of exceptions from the most popular products on the internet.

Sentry