Python lambda (Anonymous Functions) | filter, map, reduce

In Python, anonymous function means that a function is without a name. As we already know that def keyword is used to define the normal functions and the lambda keyword is used to create anonymous functions. It has the following syntax:

lambda arguments: expression

Let’s look at this example and try to understand the difference between a normal def defined function and lambda function. This is a program that returns the cube of a given value:

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python code to illustrate cube of a number 
# showing difference between def() and lambda().
def cube(y):
    return y*y*y;
  
g = lambda x: x*x*x
print(g(7))
  
print(cube(5))
chevron_right

Output:



343
125

Lambda functions can be used along with built-in functions like filter(), map() and reduce().

Use of lambda() with filter()

The filter() function in Python takes in a function and a list as arguments. This offers an elegant way to filter out all the elements of a sequence “sequence”, for which the function returns True. Here is a small program that returns the odd numbers from an input list:

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python code to illustrate
# filter() with lambda()
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]
final_list = list(filter(lambda x: (x%2 != 0) , li))
print(final_list)
chevron_right

Output:

[5, 7, 97, 77, 23, 73, 61]

Use of lambda() with map()

The map() function in Python takes in a function and a list as argument. The function is called with a lambda function and a list and a new list is returned which contains all the lambda modified items returned by that function for each item. Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python code to illustrate 
# map() with lambda() 
# to get double of a list.
li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]
final_list = list(map(lambda x: x*2 , li))
print(final_list)
chevron_right

Output:

[10, 14, 44, 194, 108, 124, 154, 46, 146, 122]

Use of lambda() with reduce()

The reduce() function in Python takes in a function and a list as argument. The function is called with a lambda function and a list and a new reduced result is returned. This performs a repetitive operation over the pairs of the list. This is a part of functools module. Example:

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python code to illustrate 
# reduce() with lambda()
# to get sum of a list
from functools import reduce
li = [5, 8, 10, 20, 50, 100]
sum = reduce((lambda x, y: x + y), li)
print (sum)
chevron_right

Output:

193

Here the results of previous two elements are added to the next element and this goes on till the end of the list like (((((5+8)+10)+20)+50)+100).

This article is contributed by Chinmoy Lenka. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.





Article Tags :