Lambda, Map, and Filter in Python
A look at the syntax and usage of each function
Today’s piece covers using lambda, map, and filter functions in Python. We’ll be covering the basic syntax of each and walking through some examples to familiarize yourself with using them. Let’s get started!
A lambda operator or lambda function is used for creating small, one-time, anonymous function objects in Python.
lambda arguments : expression
A lambda operator can have any number of arguments but can have only one expression. It cannot contain any statements and returns a function object which can be assigned to any variable.
Let’s look at a function in Python:
The above function name is add, it expects two arguments x and y and returns their sum.
Let’s see how we can convert the above function into a lambda function:
In lambda x, y: x + y; x and y are arguments to the function and x + y is the expression which gets executed and its values are returned as output.
lambda x, y: x + y returns a function object which can be assigned to any variable, in this case function object is assigned to the add variable.
If we check the type of add, it is a function.
Most importantly, lambda functions are passed as parameters to a function which expects a function object as a parameter such as map, reduce, and filter functions.
map(function_object, iterable1, iterable2,...)
map functions expect a function object and any number of iterables, such as list, dictionary, etc. It executes the function_object for each element in the sequence and returns a list of the elements modified by the function object.
In the above example, map executes the multiply2 function for each element in the list, [1, 2, 3, 4], and returns [2, 4, 6, 8].
Let’s see how we can write the above code using map and lambda.
Just one line of code!
Iterating Over a Dictionary Using Map and Lambda
In the above example, each dict of dict_a will be passed as a parameter to the lambda function. The result of the lambda function expression for each dict will be given as output.
Multiple Iterables to the Map Function
We can pass multiple sequences to the map functions as shown below:
Here, each i^th element of list_a and list_b will be passed as an argument to the lambda function.
In Python3, the map function returns an iterator or map object which gets lazily evaluated, similar to how the zip function is evaluated. Lazy evaluation is explained in more detail in the zip function article.
We can’t access the elements of the map object with index nor we can use
len() to find the length of the map object.
We can, however, force convert the map output, i.e. the map object, to list as shown below:
filter function expects two arguments:
function_object and an iterable.
function_object returns a boolean value and is called for each element of the iterable. Filter returns only those elements for which the
map function, the filter function also returns a list of elements. Unlike
filter function can only have one iterable as input.
Even number using filter function:
Filter list of dicts:
map, the filter function in Python3 returns a filter object or the iterator which gets lazily evaluated. We cannot access the elements of the filter object with index, nor can we use
len() to find the length of the filter object.