Open In App

Remove Items from a List While Iterating - Python

Last Updated : 03 Dec, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

When we need to remove items from a list while iterating, we have several options. If we need to remove specific values, using a for loop with remove() can work, but it’s important to avoid skipping items by iterating over a copy. A while loop offers more control and filter() is a good approach for filtering out items.

Using List Comprehension

One of the simplest and most efficient ways to remove items from a list is by using list comprehension. This allows us to create a new list that only includes the items we want to keep.

Python
a = [1, 2, 3, 6, 7, 8, 4]
a = [x for x in a if x <= 5]  # Keep only numbers less than or equal to 5
print(a) 

Output
[1, 2, 3, 4]

Other method that we can use to remove items from a list while iterating are:

Using remove()

Another way is to use a for loop and the remove() method. The remove() method removes the first occurrence of a specific value from the list. However, this method can be tricky when removing multiple items or changing the list while iterating.

Python
a = [1, 2, 3, 6, 7, 8, 6]

 # Make a copy of the list to avoid skipping items
for x in a[:]:
    if x == 6:
        a.remove(x)
print(a)  

Output
[1, 2, 3, 7, 8]

Using While Loop and Indexing

We can also use a while loop with list indexing to manually check each item and remove it if needed. This gives us more control but requires careful handling of the index.

Python
a = [1, 2, 3, 6, 7, 8, 6]
i = 0
while i < len(a):
    if a[i] == 6:
      # Remove the item at index i
        del a[i]  
    else:
      # Only move to next item if no item is removed
        i += 1 
print(a) 

Output
[1, 2, 3, 7, 8]

Using filter() Function

This method returns an iterator, so we need to convert it back to a list. The filter() function takes two arguments: a function that defines the condition (here, we use a lambda function) and the list we want to filter.

Python
a = [1, 2, 3, 6, 7, 8, 4]
# Keep only numbers less than or equal to 5

a = list(filter(lambda x: x <= 5, a))  
print(a) 

Output
[1, 2, 3, 4]

Next Article

Similar Reads