- A lambda function is a small anonymous function.
- A lambda function can take any number of arguments, but can only have one expression.
x = lambda a : a + 10 print(x(5)) x = lambda a, b, c : a + b + c print(x(5, 6, 2))
map() function returns a map object(which is an iterator) of the results after applying the given function to each item of a given iterable (list, tuple etc.). We can pass as many iterable objects as we want after passing the function we want to use:
The syntax is:
def addition(n): return n + n # We double all numbers using map() numbers = (1, 2, 3, 4) result = map(addition, numbers) print(list(result)) >>>[2, 4, 6, 8] # We can also use lambda expressions with map to achieve above result. numbers = (1, 2, 3, 4) result = map(lambda x: x + x, numbers) print(list(result)) >>>[2, 4, 6, 8] # Add two lists using map and lambda numbers1 = [1, 2, 3] numbers2 = [4, 5, 6] result = map(lambda x, y: x + y, numbers1, numbers2) print(list(result)) >>>[5, 7, 9] # List of strings l = ['sat', 'bat', 'cat', 'mat'] # map() can listify the list of strings individually test = list(map(list, l)) print(test) >>>[['s', 'a', 't'], ['b', 'a', 't'], ['c', 'a', 't'], ['m', 'a', 't']]
filter() takes a function object and an iterable and creates a new list.
As the name suggests,
filter() forms a new list that contains only elements that satisfy a certain condition, i.e. the function we passed returns
The syntax is:
To create a new list that only contain elements for which the
starts_with_A() function returns True:
# Without using lambdas def starts_with_A(s): return s == "A" fruit = ["Apple", "Banana", "Pear", "Apricot", "Orange"] filter_object = filter(starts_with_A, fruit) print(list(filter_object)) >>>['Apple', 'Apricot'] # using a lambda: fruit = ["Apple", "Banana", "Pear", "Apricot", "Orange"] filter_object = filter(lambda s: s == "A", fruit) print(list(filter_object)) >>>['Apple', 'Apricot']
reduce() function in Python takes in a function and a list as argument.
reduce() works differently than
filter(). It does not return a new list based on the function and iterable we've passed. Instead, it returns a single value.
reduce() works by calling the function we passed for the first two items in the sequence. The result returned by the function is used in another call to function alongside with the next (third in this case), element.
reduce() is a bit harder to understand than map() and filter(), so let's look at a step by step example:
We start with a list
[2, 4, 7, 3] and pass the
add(x, y) function to
reduce() alongside this list, without an initial value
add(2, 4), and
add(6, 7) (result of the previous call to
add() and the next element in the list as parameters), and
add(13, 3), and
Since no more elements are left in the sequence,
The only difference, if we had given an initial value would have been an additional step - 1.5. where reduce() would call add(initial, 2) and use that return value in step 2.
Let's go ahead and use the reduce() function:
from functools import reduce def add(x, y): return x + y list = [2, 4, 7, 3] print(reduce(add, list)) >>> 16
from functools import reduce list = [2, 4, 7, 3] print(reduce(lambda x, y: x + y, list)) >>> 16 print("With an initial value: " + str(reduce(lambda x, y: x + y, list, 10))) And the code would result in: >>> With an initial value: 26