Python programming language provides filter()
function in order to filter a given array, list, dictionary, or similar iterable struct. filter()
function can be used to create iterable by filtering some elements of the given data.
Python Filter Function Syntax
filter()
function has the following syntax. FUNCTION is the function name we will use to test the given dataset and create a new iterable list. ITERABLE is the data we will check with our function and filter.
filter(FUNCTION, ITERABLE)
Filter List
The most popular usage of the filter()
function is using Python List. We will provide a list which will be filtered with the given function. In this example, we will provide the list named numbers
and use oddF'lter()
function in order to filter numbers
.
#!/bin/python3
numbers=[1,2,3,4,5,6,7,8,9]
def oddFilter(number):
if(number%2==0):
return True
else:
return False
odd_numbers=filter(oddFilter,numbers)
for number in odd_numbers:
print(number)

We will provide the list named numbers
. This list contains numbers from 1 to 9. We will create a filter function named oddFilter()
which will filter for odd numbers in the given list and return True if the given element is odd or return False if the given element is even. Then we will add odd numbers to a new list named odd_numbers
.
Filter Dictionary
Dictionaries can be also filtered with the filter()
function. We can filter dictionaries according to their key or value for each element. In this example, we will filter the dictionary named names
.
#!/bin/python3
names={1:"ismail",2:"ali",3:"ahmet",4:"elif",5:"ecrin"}
filtered_dict = dict(filter(lambda item: item[0]%2==0 , names.items()))
for item in filtered_dict.items():
print(item)

Filter String List
We can also use filter()
function in order to filter the given string list. In this example, we will look for strings which contains i
letter.
#!/bin/python3
names=['ismail','ali','ahmet','elif','ecrin']
def filterString(name):
if 'i' in name:
return True
else:
return False
filtered_names=filter(filterString,names)
for name in filtered_names:
print(name)

Filter Using Lambda
Lambda is very useful when we want not to use a function. As filter()
function requires a function we can skip defining a new function and use lambda like a function. We will filter those strings which contain the letter i
.
#!/bin/python3
names=["ismail","ali","ahmet","elif","ecrin"]
filtered_names = filter(lambda item: 'i' in item , names)
for item in filtered_names:
print(item)
In the “filter dictionary” section, the code has en error (probably because of the HTML rendering). It misses out two zeros (‘0’). One inside the brackets and another after the equal operator ‘==’)
What would the solution be if you would like to filter for ‘i’ or ‘l’
LOL…. I always wonder how such things come into being.
You’ve documented in the list filtering section that you are going to filter a list of numbers for the odd ones. You’ve got the output shown right there.
Does the person that created the web page not understand the code? Do they not read it? Does the person that created the code not know the difference between odd and even? Did they never run the code they created?
How does this happen?