python tutorial - Python reduce | reduce() in Python - learn python - python programming




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 code to demonstrate working of reduce()
 
# importing functools for reduce()
import functools
 
# initializing list
lis = [ 1 , 3, 5, 6, 2, ]
 
# using reduce to compute sum of list
print ("The sum of the list elements is : ",end="")
print (functools.reduce(lambda a,b : a+b,lis))
 
# using reduce to compute maximum element from list
print ("The maximum element of the list is : ",end="")
print (functools.reduce(lambda a,b : a if a > b else b,lis))

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 :

# Python code to demonstrate working of reduce()
# using operator functions
 
# importing functools for reduce()
import functools
 
# importing operator for operator functions
import operator
 
# initializing list
lis = [ 1 , 3, 5, 6, 2, ]
 
# using reduce to compute sum of list
# using operator functions
print ("The sum of the list elements is : ",end="")
print (functools.reduce(operator.add,lis))
 
# using reduce to compute product
# using operator functions
print ("The product of list elements is : ",end="")
print (functools.reduce(operator.mul,lis))
 
# using reduce to concatenate string
print ("The concatenated product is : ",end="")
print (functools.reduce(operator.add,["wiki","tec","hy"]))

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 code to demonstrate summation 
# using reduce() and accumulate()
 
# importing itertools for accumulate()
import itertools
 
# importing functools for reduce()
import functools
 
# initializing list 
lis = [ 1, 3, 4, 10, 4 ]
 
# priting summation using accumulate()
print ("The summation of list using accumulate is :",end="")
print (list(itertools.accumulate(lis,lambda x,y : x+y)))
 
# priting summation using reduce()
print ("The summation of list using reduce is :",end="")
print (functools.reduce(lambda x,y:x+y,lis))

python tutorial - Output :

The summation of list using accumulate is :[1, 4, 8, 18, 22]
The summation of list using reduce is :22

Wikitechy tutorial site provides you all the learn python , python 3 online course , python scripting training , python training , python online course , learning with python , python programming training , learn python programming for beginners , learn python course , free online courses for python , courses in python

Related Searches to reduce() in python