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']
Concatenate two lists in Python
David Y.
Slicing in Python
David Y.
Handle Windows paths in Python
David Y.
Get key by value in dictionary Python
David Y.

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