The filter function is best used for applying a Boolean function to all items of a sequence (e.g. list, tuple etc) with the objective of returning only the items which satisfy the condition = True.
(Note: A Boolean function returns either a true or false value).
The filter function only returns items that satisfies a condition.
So if you have the objective of extracting specific items from a sequence then filter might be the best solution.
The filter function takes the form:
Let’s illustrate how it works:
Let’s say you have a list:
l= [1, ‘a’, 2, ‘b’, 3, ‘c’]
and we have the Boolean function that will determine if an item is an integer or not:
Using the filter function will return only the items which have met the integer condition:
With filter functions, most of the time the lambda expression is used rather than defining a Boolean function first.
For example, let’s say we want to extract only the string items from the same list l:
filter(lambda x: type(x)==str, l)
[‘a’, ‘b’, ‘c’]
Just like map and reduce functions, the use of lambda expression is for the purpose of saving time.
If you are just going to use a function once, no need to define it just to use the filter function. Just use lambda instead.
It is also important to point out that, Filter resembles a for loop but a simpler version.
So there is the simple explanation of the filter. Now that you have grasped the concept apply it to more complicated problems.
The filter function is really powerful when used together with map and reduce functions.
For more information go to the official Python documentation: