Python list remove doesn t work

While lists aren’t the most efficient data structure if you’ll be doing lots of deleting from the middle, there are definitely good ways to accomplish the task. The built-in remove() method should be your first option. Let’s go over some examples.

Remove element in Python list by value

primes = [2, 3, 5, 5, 7, 11]

primes.remove(5)

print(primes)
# [2, 3, 5, 7, 11]

primes.remove(5)
# [2, 3, 7, 11]

primes.remove(5)
# careful, this will throw an error
# ValueError: list.remove(x): x not in list

If you want to safely remove items, and you aren’t sure if they exist in the list or not, you can either catch the error:

try:
	primes.remove(5)
except Exception as e:
	print("not in list")

Or, you can check for existence first:

if 5 in primes:
	primes.remove(5)

Remove an element in Python list by index

The del statement is a built-in keyword that allows you to remove items from lists. The simplest example deletes the item at a given index.

primes = [2, 3, 5, 5, 7, 11]

# delete the second item
del primes[1]

print(primes)
# [2, 5, 5, 7, 11]

Again, you need to be careful. If the index doesn’t exist an error will be raised.

primes = [2, 3, 5, 5, 7, 11]

# delete the eleventh item
del primes[10]

IndexError: list assignment index out of range

if len(primes) >= 10:
	del primes[10]

A simple path to your career in back-end development

Python list remove doesn t work

The pace of Boot.dev's JavaScript, Python and Go courses has been perfect for me. The diverse community in Discord is a blast, and other members are quick to help out with detailed answers and explanations.

- Daniel Gerep from Cassia, Brasil

Remove multiple of items from a python list

primes = [2, 3, 5, 5, 7, 11]

# deleting items from 2nd to 4th
del primes[1:4]

print(primes)
# [2, 7, 11]

Remove item by index and return it

The .pop() method removes an item from a list by index and returns that item.

primes = [2, 3, 5, 7]

# pop the second element
popped = primes.pop(1)

print("popped:", popped)
# 3

print("list:", primes)
# [2, 5, 7]

If you don’t pass an index parameter to pop() it will default to -1 and remove the last element from the list. Just like the other methods, if you pass in a number too large, you’ll get the following error.

IndexError: pop index out of range

In this tutorial, you’ll learn how to use Python to remove an item from a list. You’ll learn how to do this using the pop, remove, del, and clear methods, as well as how to remove just one instance of an item or all instances. You’ll also learn how to remove multiple Python list items conditionally.

Python lists are mutable data types, meaning that they can be changed. They are also indexed, meaning that their order matters and that items can be accessed (and modified) based on their index position. Being able to work with lists and knowing how to remove items is an important skill. For example, you could be building a game where you need to remove items as players select them.

Python provides a number of different methods to remove items from a list. Below, you’ll find a quick summary of the different methods and how they remove items. In the sections below, you’ll find in-depth guides as to how these functions work.

MethodWhat it does
list.pop() Removes an item at an index position and returns it
list.remove() Removes the first item matching a value
slicing Can be used to delete non-matching ranges of data
del statement Removes an item at an index position and doesn’t return it
list.clear() Removes all items in a Python list
The many ways to remove an item from a Python list

The Quick Answer: Use pop, remove, and del

Python list remove doesn t work

  • Python Remove Method to Remove List Item Based on its Value
  • Python Remove All Items Matching a Value
  • Python Pop Method to Remove a List Item Based on Index Position
  • Python del Method to Remove a List Item Based on Index Position and Don’t Return it
  • Remove All Items from a Python List with Clear
  • Remove Items from a Python List with Slicing
  • Removing Items for a Python List Based on a Condition
  • Conclusion

Python Remove Method to Remove List Item Based on its Value

Python makes it easy to delete a list item based on its value by using the Python list remove method. The method scans a list for the first instance of that value and removes the first instance of that value.

Let’s see how we can use the .remove() list method to remove an item from a list:

# Remove a list item by value using .remove()
values = ['datagy', 1, 2, 3, 'datagy']
values.remove(1)

print(values)

# Returns: ['datagy', 2, 3, 'datagy']

We applied the remove method to our list, in place – meaning that we didn’t need to reassign the values.

But what happens if we try to remove an item that doesn’t exist? Let’s see what happens when we try to run the code below:

# Remove a list item by value using .remove() that doesn't exist
values = ['datagy', 1, 2, 3, 'datagy']
values.remove(4)

print(values)

# Returns: ValueError: list.remove(x): x not in list

We can see that when we try to use the remove method to remove an item that doesn’t exist, then a ValueError is returned. If you’re not sure if a value exists in a list and don’t want your program to crash, you can wrap the method in a try-except block.

Let’s see how we can do that below:

# Remove a list item by value using .remove()
values = ['datagy', 1, 2, 3, 'datagy']
try:
    values.remove(4)
except ValueError:
    pass
print(values)

# Returns: ['datagy', 1, 2, 3, 'datagy']

We can see here that when the ValueError is raised that the code skips ahead and does nothing.

In the next section, you’ll learn how to use the Python remove method to remove all items matching a value.

Check out some other Python tutorials on datagy, including our complete guide to styling Pandas and our comprehensive overview of Pivot Tables in Pandas!

Python Remove All Items Matching a Value

As shown below, the Python .remove() method only removes the first instance of that item in a list. What if you wanted to remove all instances of that item in a list? In order to accomplish this, we can use a while loop in order to repeat an action while a statement continues to be true.

In particular, our while loop will continue to remove the item from our list while the item still exists in our list. Let’s see how this works in Python:

# Remove all list items by value using .remove() 
values = ['datagy', 1, 2, 3, 'datagy']
while 'datagy' in values:
    values.remove('datagy')
print(values)

# Returns: [1, 2, 3]

We can see here that the remove method is applied as many times as the item ‘datagy’ is still in our list. At that point, the code moves on and prints out the values of our list.

Another way that we can do this is to use a list comprehension. We can have the list comprehension loop over each item in our list see if the item is equal to the item we want to remove. If it’s not, then we include it in our new list.

Let’s see what this looks like in Python:

# Remove all list items by value using .remove() 
values = ['datagy', 1, 2, 3, 'datagy']
values = [value for value in values if value != 'datagy']
print(values)

# Returns: [1, 2, 3]

In the example above, we looped over each item in our list and included the value if it wasn’t equal to the item we wanted to remove.

In the next section, you’ll learn how to use the Python pop method to remove a list item based on its index position.

Want to learn more about Python f-strings? Check out my in-depth tutorial, which includes a step-by-step video to master Python f-strings!

Python Pop Method to Remove a List Item Based on Index Position

The Python pop method is a commonly used list method that removes an item from a list and returns it. While the remove method remove an item based on its value, the pop method removes an item based on its index. When you the pop method, we specify the item’s index and pop it, meaning that we return the item and remove it from the list.

Let’s see how this works in Python:

# Remove a list item by position using .pop()
values = ['datagy', 1, 2, 3, 'datagy']
values.pop(0)
print(values)

# Returns: [1, 2, 3, 'datagy']

We can see that when we pop an item that exists, then the value is removed from the list and is returned.

How do we access the popped item? We can assign it to a value. Let’s see how we can do this:

# Remove a list item by index using .pop() 
values = ['datagy', 1, 2, 3, 'datagy']
item = values.pop(0)
print(item)

# Returns: datagy

Let’s see what happens when we try to apply the pop method on an item that doesn’t exist:

# Remove a list item by index position using pop() that doesn't exist
values = ['datagy', 1, 2, 3, 'datagy']
values.pop(6)
print(values)

# Returns: IndexError: pop index out of range

We can see that when we try to pop an item that doesn’t exist, then we return an IndexError.

In the next section, you’ll learn how to remove an item using the del method based on a list’s index, but don’t return it.

Need to check if a key exists in a Python dictionary? Check out this tutorial, which teaches you five different ways of seeing if a key exists in a Python dictionary, including how to return a default value.

Python del Method to Remove a List Item Based on Index Position and Don’t Return it

The Python del operator is similar to the Python pop method, in that it removes a list item based on its position. It differs from the pop method in that the method removes the item but doesn’t return it.

The del operator goes further and allows us to delete a slice of items from a list.

Let’s see how we can do both of this using the Python del operator:

# Remove list items by value using del 
values = ['datagy', 1, 2, 3, 'datagy']
del values[0]
print(values)
# Returns: [1, 2, 3, 'datagy']

values = ['datagy', 1, 2, 3, 'datagy']
del values[1:3]
print(values)
# Returns: ['datagy', 3, 'datagy']

We can see that in we can both delete a single item or a slice of items from a list in Python.

But what happens when we try to delete an item at a position that doesn’t exist? We raise an IndexError. Let’s see how this occurs:

# Remove list items by value using del 
values = ['datagy', 1, 2, 3, 'datagy']
del values[10]
print(values)
# Returns: IndexError: list assignment index out of range

In the next section, you’ll learn how to remove all items from a Python list using the clear method.

Want to learn how to use the Python zip() function to iterate over two lists? This tutorial teaches you exactly what the zip() function does and shows you some creative ways to use the function.

Remove All Items from a Python List with Clear

There may be times when you want to remove all items from a Python list – this is where the .clear() method comes into play. The clear method works in-place, meaning that we don’t need to reassign the list in order to clear it.

Let’s see how we can use the clear method to delete all items from a Python list:

# Clear an Entire list in Python
values = ['datagy', 1, 2, 3, 'datagy']

values.clear()
print(values)

# Returns: []

We can see here when we apply the clear method to a list, that it deletes all items from that list, returning an empty list.

In the next section, you’ll learn how to remove items from a Python list using slicing.

Want to learn more about Python for-loops? Check out my in-depth tutorial that takes your from beginner to advanced for-loops user! Want to watch a video instead? Check out my YouTube tutorial here.

Remove Items from a Python List with Slicing

We can also remove items from a list by simply slicing the list. The benefit of this approach is that we can reverse the method of using slicing using the del method, by specifying items that we want to keep.

For example, if we wanted to keep all items except for the first and last item, we could write the following:

# Removing list items using slicing
values = ['datagy', 1, 2, 3, 'datagy']
values = values[1:-1]
print(values)
# Returns: IndexError: [1, 2, 3]

Here we re-assign the Python list to a slice of itself, being able to filter items from the slice of itself.

In the next section, you’ll learn how to use Python to remove items from a list using a condition.

Want to learn how to get a file’s extension in Python? This tutorial will teach you how to use the os and pathlib libraries to do just that!

Removing Items for a Python List Based on a Condition

In this final section, you’ll learn how to remove items from a Python list conditionally. For example, you can remove non-numeric items from a list or only delete only odd numbers from a list.

We’ll accomplish this using a Python list comprehension, which I cover off in detail here. List comprehensions allow us to create new lists by iterating over an iterable object, such as a list.

Let’s see how we can use a list comprehension to remove all non-numeric items from our list:

# Delete items from a list conditionally
values = ['datagy', 1, 2, 3, 'datagy']
values = [item for item in values if str(item).isdigit()]

print(values)
# Returns: [1, 2, 3]

Here we loop over our list and evaluate if the item is a numeric value. If it is, then it’s added into our list. If it’s not, then we don’t include it.

Similarly, we can delete all odd items from a list using a Python list comprehension:

# Delete items from a list conditionally
values = [1, 2, 3, 4, 5, 6]
values = [item for item in values if item % 2 == 0]

print(values)
# Returns: [2, 4, 6]

In the example above, we use the modulus operator to evaluate if an item is even or odd. Any even item, when the modulus 2 is applied, will return a remainder of 0. Similarly, any odd value will return a value of 1. Because of this, we can use the list comprehension to delete any odd numbers from a list.

Want to learn more about Python list comprehensions? Check out this in-depth tutorial that covers off everything you need to know, with hands-on examples. More of a visual learner, check out my YouTube tutorial here.

Conclusion

In this tutorial, you learned how to use Python to delete or remove list items. You learned how to use the pop, del, remove methods to remove items from a list – including when to use which method and the pros and cons of each. Finally, you learned how to remove items from a list conditionally in Python, using Python list comprehensions.

To learn more about the Python .remove() list method, check out the official documentation here.

How does remove () work in Python?

The remove() method removes the first occurrence of the element with the specified value.

How do I remove something from a list in Python?

How to Remove an Element from a List Using the remove() Method in Python. To remove an element from a list using the remove() method, specify the value of that element and pass it as an argument to the method. remove() will search the list to find it and remove it.

How does list Remove work in Python?

The remove() method takes a single element as an argument and removes it from the list. If the element doesn't exist, it throws ValueError: list.remove(x): x not in list exception.

How do you remove all occurrences of an item from a list in Python?

Python3. Method 3 : Using remove() In this method, we iterate through each item in the list, and when we find a match for the item to be removed, we will call remove() function on the list.