#
Table of Contents
-
Remove elements from List based on a condition in Python
-
Remove elements from List based on a condition using filter()
-
Remove elements from List based on a condition using for loop
-
Remove elements from List based on multiple conditions
#
Remove elements from list based on a condition in Python
Use a list comprehension to remove elements from a list based on a
condition.
The list comprehension will return a new list that doesn't contain any of the
elements that don't meet the condition.
my_list = [22, 55, 99, 105, 155, 205]
new_list = [item for item in my_list if item > 100]
print(new_list)
We used a
list comprehension
to
remove elements from a list based on a condition.
List comprehensions are used to perform some operation for every element or select a subset of elements that meet a condition.
my_list = [22, 55, 99, 105, 155, 205]
new_list = [item for item in my_list if item > 100]
print(new_list)
On each iteration, we check if the current list item is greater than
100
and
return the result.
The new list will only contain values that are greater than
100
.
The list comprehension doesn't change the original list, it creates a new list.
#
Removing elements from the original list
If you need to change the original list, use a list slice.
my_list = [22, 55, 99, 105, 155, 205]
my_list[:] = [item for item in my_list if item > 100]
print(my_list)
We used the
my_list[:]
syntax to get a slice that represents the entire list,
so we can assign to the variable directly.
The slice
my_list[:]
represents the entire list, so when we use it on the left-hand side, we are assigning to the entire list.
This approach changes the contents of the original list.
Alternatively, you can use the
filter()
function.
#
Remove elements from list based on a condition using filter()
This is a three-step process:
-
Use the
filter()
function to filter out elements that don't meet the
condition.
-
Use the
list()
class to convert the
filter
object to a list.
-
The new list won't contain any elements that don't meet the condition.
my_list = [22, 55, 99, 105, 155, 205]
new_list = list(
filter(lambda item: item > 100, my_list)
print(new_list)
We used the
filter()
function to remove elements from a list based on a
condition.
The
filter
function
takes a function and an iterable as arguments and constructs an iterator from
the elements of the iterable for which the function returns a truthy value.
The lambda function gets called with each element in the list, checks if the
value is greater than
100
and returns the result.
The
filter
object only contains values that are greater than
100
.
The last step is to use the
list()
class to
convert the
filter
object to a list.
Alternatively, you can use a
for
loop.
#
Remove elements from list based on a condition using for loop
This is a three-step process:
-
Use a
for
loop to iterate over a copy of the list.
-
On each iteration, check if the current item meets a condition.
-
Use the
list.remove()
method to remove the matching elements.
my_list = [22, 55, 99, 105, 155, 205]
for item in my_list.copy():
if item <= 100:
my_list.remove(item)
print(my_list)
On each iteration, we check if the current item is less than or equal to
100
and use the
list.remove()
method to remove the matching elements.
The
list.remove()
method removes the first
item from the list whose value is equal to the passed in argument.
The
remove()
method mutates the original list and
returns None
.
The most important thing to note when removing items from a list in a
for
loop
is to use the
list.copy()
method to iterate over a copy of the list.
If you try to iterate over the original list and remove items from it, you might
run into difficult to locate bugs.
#
Remove elements from list based on multiple conditions
If you need to remove elements from a list based on multiple conditions, use the
boolean AND
and
boolean OR
operators.
my_list = [22, 55, 99, 105, 155, 205]
new_list = [
item for item in my_list
if item > 100
and item < 200
print(new_list)
The code sample uses the boolean
AND
operator to check for 2 conditions.
When the boolean
AND
operator is used, both conditions have to be met for the
element to get included in the new list.
Only elements that are greater than
100
and less than
200
get added to the
list in the example.
If you need to check for multiple conditions where only 1 has to be met, use the
boolean
OR
operator.
my_list = [22, 55, 99, 105, 155, 205]
new_list = [
item for item in my_list
if item > 100