Python Map, Filter and Reduce (With Examples)

Learn to use map, filter and reduce functions in Python 3 with examples.

Python Map, Filter and Reduce (With Examples)
Map, filter and Reduce in Python

Pre-requisites

  1. Python Functions
  2. Anonymous or Lambda Functions

Introduction

Map, filter and reduce functions are the pillars of functional programming. While Python isn’t a purely functional programming language, it boasts many features that allow it to be used as such.

This article covers the usage of Python’s map, filter and reduce functions and how they conform to the ideas of functional programming.

💡
If you prefer to watch videos over reading blogs, check out the link here or scroll to the bottom!

map()

The map() function will iterate through all items in the given iterable and will execute the function passed as an argument on each of the items. Let’s go through the below mentioned code.

Example 1

Code

counter = 0

for i in range(10):
    counter += 1
    print(counter)

Within every iteration, you are performing an addition operation with the counter variable. The results should look like the following.

Output

1
2
3
4
5
6
7
8
9
10

Now, another way of achieving the above result is by using the map() function in Python.

Code

def add_one(num):
    return num+1

counter_list = map(add_one, range(10))
print(counter_list)

As you can see above, the addition operation has now moved inside the add_one() function. The function returns the parameter passed after adding 1 to it.

Now if you try to print counter_list, you will get an output similar to this.

<map object at 0x000001FED1D4FE80>

Basically, it is the address of the generator object created by the map() function. The object returned my map() is called a Lazy Iterable. The concept is called Lazy evaluation, which means that the object is evaluated when it is needed and not when it is created.

In order to get the output, you need to convert it into an iterable. For that you can enclose the map() function within an iterable of your choice like list, sets, tuples etc.

Code

def add_one(num):
    return num+1

counter_list = list(map(add_one, range(10)))
print(counter_list)

Output

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

You could also replace the above function using a Lambda function.

Example 2 - Using Lambda Function

Code

add_one = lambda x: x+1
counter_list = list(map(add_one, range(10)))
print(counter_list)

Output

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

To learn more about Lambda functions in Python, check out this article.


filter()

The filter() function works similar to map() function, except, it validates True if a condition is met and validates False otherwise. It only returns the items of a sequence that validate to True.

Example 1

Code

check_boolean = filter(bool, ["Pylenin", "", None])
print(list(check_boolean))

The above code checks the boolean status of the items in the list. If it is True, it returns the item and if it is False, it doesn’t include it in the results.

Output

['Pylenin']

As you can see, only "Pylenin" is being returned in the result list. This means that the other 2 items are being validated as False by the bool function. To learn more about Booleans, check out this article here.

Similar to map() function, filter() also engages a lazy evaluation.


reduce()

Unlike map() and filter(), reduce() function doesn’t return a new sequence. Instead, it returns a single value.

In Python 3, reduce() has been moved to the functools library. You can read Guido van Rossum’s (the creator of Python) reasoning behind moving reduce here.

Example 1

Code

from functools import reduce

def addition(x, y):
    return x + y

list = [1, 2, 3, 4]
print(reduce(addition, list))

The above code tries to add the elements of a list and return the final output. Now you might think that this is unnecessarily over doing simple addition. This is true. Also, it can have bad performance because it calls a function multiple times.

So, be careful with using reduce() function in your code.


Youtube Video

Subscribe to Pylenin

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe