The reduce(fun,seq) function is used to apply a particular function passed in its argument to all of the list elements mentioned in the sequence passed along.This function is defined in “functools” module.
Working :
- At first step, first two elements of sequence are picked and the result is obtained.
- Next step is to apply the same function to the previously attained result and the number just succeeding the second element and the result is again stored.
- This process continues till no more elements are left in the container.
- The final returned result is returned and printed on console.
python - Sample - python code :
python tutorial - Output :
The sum of the list elements is : 17 The maximum element of the list is : 6
Using Operator Functions
reduce() can also be combined with operator functions to achieve the similar functionality as with lambda functions and makes the code more readable.
python - Sample - python code :
Output
The sum of the list elements is : 17 The product of list elements is : 180 The concatenated product is : wikitechy
reduce() vs accumulate()
Both reduce() and accumulate() can be used to calculate the summation of a sequence elements. But there are differences in the implementation aspects in both of these.
- reduce() is defined in “functools” module, accumulate() in “itertools” module.
- reduce() stores the intermediate result and only returns the final summation value. Whereas, accumulate() returns a list containing the intermediate results. The last number of the list returned is summation value of the list.
- reduce(fun,seq) takes function as 1st and sequence as 2nd argument. In contrast accumulate(seq,fun) takes sequence as 1st argument and function as 2nd argument.
python - Sample - python code :
python tutorial - Output :
The summation of list using accumulate is :[1, 4, 8, 18, 22] The summation of list using reduce is :22