Remove Items from a List While Iterating Python (original) (raw)

Last Updated : 03 Dec, 2024

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)

`

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

Table of Content

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)

`

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)

`

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)

`