Python filter() function

The filter() function offers a functional programming paradigm in Python, enabling developers to create concise and streamlined code. This method empowers programmers to focus on the logic at hand, reducing the need for intricate loops and branching structures. Through the application of filter(), the codebase becomes more elegant and straightforward, contributing to enhanced readability and maintainability.

The filter() method yields an iterator wherein items undergo filtration via a designated function to ascertain their acceptance or rejection. The resulting iterable could manifest as a sequence, an iterable container, or an iterator itself. In cases where the function parameter is None, the identity function is presumed, thus resulting in the removal of elements from the iterable that evaluate to false.

filter(function, iterable)
  1. function : The function that tests if elements of an iterable returns true or false.
  2. iterable : The iterable to be filtered.

How to filter a list in Python

Basic Usage

def is_even(x): return x % 2 == 0 numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] even_numbers = filter(is_even, numbers) print(list(even_numbers)) # Output: [2, 4, 6, 8]

In this example, the is_even() function is defined to check if a number is even. The filter() function is used to filter the even numbers from the numbers list.

Using Lambda Functions

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9] even_numbers = filter(lambda x: x % 2 == 0, numbers) print(list(even_numbers)) # Output: [2, 4, 6, 8]

Here, a lambda function is utilized directly within the filter() function to achieve the same filtering outcome.

Filtering Strings

fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry'] long_fruits = filter(lambda fruit: len(fruit) > 5, fruits) print(list(long_fruits)) # Output: ['banana', 'cherry', 'elderberry']

In this example, the filter() function is applied to a list of fruits, retaining only the ones with names longer than 5 characters.

Filtering with None Values

numbers = [1, 2, 3, None, 5, 6, None, 8, 9] filtered_numbers = filter(None, numbers) print(list(filtered_numbers)) # Output: [1, 2, 3, 5, 6, 8, 9]

The filter() function with the argument None effectively removes any None values from the list.


The filter() function serves as a powerful tool for extracting specific elements from iterables based on conditional criteria. It's particularly useful in scenarios where you need to process or analyze data, selecting only relevant portions.