0
0
PythonHow-ToBeginner · 3 min read

Remove All Occurrences of Element from List in Python Easily

To remove all occurrences of an element from a list in Python, use a list comprehension to create a new list excluding that element. For example, new_list = [x for x in old_list if x != element] removes all instances of element.
📐

Syntax

The common way to remove all occurrences of an element from a list is using a list comprehension:

  • new_list = [x for x in old_list if x != element]

Here, old_list is your original list, element is the value to remove, and new_list is the new list without that element.

python
new_list = [x for x in old_list if x != element]
💻

Example

This example shows how to remove all occurrences of the number 3 from a list.

python
old_list = [1, 3, 2, 3, 4, 3, 5]
# Remove all 3s
new_list = [x for x in old_list if x != 3]
print(new_list)
Output
[1, 2, 4, 5]
⚠️

Common Pitfalls

A common mistake is trying to remove elements while looping over the same list, which can skip elements or cause errors.

For example, using list.remove() inside a loop over the list can behave unexpectedly.

Instead, use a list comprehension or loop over a copy of the list.

python
old_list = [1, 3, 2, 3, 4, 3, 5]
# Wrong way: modifying list while iterating
for x in old_list[:]:
    if x == 3:
        old_list.remove(x)
print(old_list)  # Output may be unexpected

# Right way: use list comprehension
old_list = [1, 3, 2, 3, 4, 3, 5]
new_list = [x for x in old_list if x != 3]
print(new_list)
Output
[1, 2, 4, 5] [1, 2, 4, 5]
📊

Quick Reference

Summary tips for removing all occurrences of an element from a list:

  • Use list comprehension for a clean, readable solution.
  • Avoid modifying a list while iterating over it.
  • Use list.remove() only to remove the first occurrence, not all.
  • To remove all, create a new filtered list.

Key Takeaways

Use list comprehension to remove all occurrences of an element from a list.
Avoid changing a list while looping over it to prevent skipping elements.
list.remove() removes only the first matching element, not all.
Creating a new list with filtered elements is the safest and clearest method.