Open In App

reduce() in Python

Last Updated : 20 Jun, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

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.
Python3
# 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))

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.

Python3
# 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, ["geeks", "for", "geeks"]))

Output
The sum of the list elements is : 17
The product of list elements is : 180
The concatenated product is : geeksforgeeks

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 iterator containing the intermediate results. The last number of the iterator 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.
Python3
# 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]

# printing summation using accumulate()
print("The summation of list using accumulate is :", end="")
print(list(itertools.accumulate(lis, lambda x, y: x+y)))

# printing summation using reduce()
print("The summation of list using reduce is :", end="")
print(functools.reduce(lambda x, y: x+y, lis))

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

                                                                                             reduce() function with three parameters

Reduce function i.e. reduce() function works with 3 parameters in python3 as well as for 2 parameters. To put it in a simple way reduce() places the 3rd parameter before the value of the second one, if it’s present. Thus, it means that if the 2nd argument is an empty sequence, then 3rd argument serves as the default one. 

 Here is an example :(This example has been take from the  functools.reduce() documentation includes a Python version of the function:

Python
# Python program to  illustrate sum of two numbers.
def reduce(function, iterable, initializer=None):
    it = iter(iterable)
    if initializer is None:
        value = next(it)
    else:
        value = initializer
    for element in it:
        value = function(value, element)
    return value

# Note that the initializer, when not None, is used as the first value instead of the first value from iterable , and after the whole iterable.
tup = (2,1,0,2,2,0,0,2)
print(reduce(lambda x, y: x+y, tup,6))

# This code is contributed by aashutoshjha

Output
15


 This article is contributed by Manjeet Singh(S.Nandini).

reduce() in Python – FAQs

What is the reduce method in a list? 

The reduce function is used to apply a function of two arguments cumulatively to the items of a list (or any iterable), from left to right, so as to reduce the iterable to a single value. It’s not a method of the list but a function in the functools module.

What is the return value of reduce() function?

The return value of the reduce() function is a single value, which is the result of the cumulative application of the provided function to the elements of the iterable.

Which module should we import to use the reduce() function?

To use the reduce() function, you need to import it from the functools module.

How to import the reduce function from the functools module?

You can import the reduce function from the functools module using the following import statement:

from functools import reduce

What is the difference between reduce and accumulate?

  • Purpose: Reduces an iterable to a single value by cumulatively applying a function.
  • Return Value: A single value.
  • Usage Example:
from functools import reduce
# Example: Sum of all elements
numbers = [1, 2, 3, 4]
result = reduce(lambda x, y: x + y, numbers)
print(result) # Output: 10
  • reduce:
    • accumulate:
      • Purpose: Computes accumulated results of applying a function (like cumulative sum) and returns an iterator with intermediate results.
      • Return Value: An iterator containing the accumulated results.
      • Module: itertools
      • Usage Example:
    from itertools import accumulate
    # Example: Cumulative sum of all elements
    numbers = [1, 2, 3, 4]
    result = list(accumulate(numbers, lambda x, y: x + y))
    print(result) # Output: [1, 3, 6, 10]


    Similar Reads

    Python | Find the Number Occurring Odd Number of Times using Lambda expression and reduce function
    Given an array of positive integers. All numbers occur even number of times except one number which occurs odd number of times. Find the number in O(n) time & constant space. Examples: Input : [1, 2, 3, 2, 3, 1, 3] Output : 3 We have existing solution for this problem please refer Find the Number Occurring Odd Number of Times link. we will solv
    1 min read
    Tips to reduce Python object size
    We all know a very common drawback of Python when compared to programming languages such as C or C++. It is significantly slower and isn't quite suitable to perform memory-intensive tasks as Python objects consume a lot of memory. This can result in memory problems when dealing with certain tasks. When the RAM becomes overloaded with tasks during e
    4 min read
    How to reduce dimensionality on Sparse Matrix in Python?
    A matrix usually consists of a combination of zeros and non-zeros. When a matrix is comprised mostly of zeros, then such a matrix is called a sparse matrix. A matrix that consists of maximum non-zero numbers, such a matrix is called a dense matrix. Sparse matrix finds its application in high dimensional Machine learning and deep learning problems.
    3 min read
    Map Reduce and Filter Operations in Python
    In this article, we will study Map, Reduce, and Filter Operations in Python. These three operations are paradigms of functional programming. They allow one to write simpler, shorter code without needing to bother about intricacies like loops and branching. In this article, we will see Map Reduce and Filter Operations in Python. Map Reduce and Filte
    3 min read
    Count operations of the given type required to reduce N to 0
    Given an integer n. The task is to count the number of operations required to reduce n to 0. In every operation, n can be updated as n = n - d where d is the smallest prime divisor of n.Examples: Input: n = 5 Output: 1 5 is the smallest prime divisor, thus it gets subtracted and n gets reduced to 0.Input: n = 25 Output: 11 5 is the smallest prime d
    4 min read
    Tensorflow | tf.data.Dataset.reduce()
    With the help of tf.data.Dataset.reduce() method, we can get the reduced transformation of all the elements in the dataset by using tf.data.Dataset.reduce() method. Syntax : tf.data.Dataset.reduce() Return : Return combined single result after transformation. Note : These given examples will demonstrate the use of new version of tensorflow 2.0, so
    1 min read
    Reduce the array by deleting elements which are greater than all elements to its left
    Given an array arr[] of N integers, the task is to delete the element from the given array if element to it's left is smaller than it. Keep on deleting the elements from the array until no element has a smaller adjacent left element. Print the resultant array after above operation. Examples: Input: arr[] = {2, 4, 1, 3, 4} Output: 2 1 Explanation: S
    5 min read
    How to Fix: TypeError: cannot perform reduce with flexible type
    In this article we will discuss TypeError: cannot perform reduce with flexible type and how can we fix it. This error may occur when we find the mean for a two-dimensional NumPy array which consists of data of multiple types. Dataset in use: Student ID Student Name Branch Marks 101 Harry CSE 87 102 Ron ECE 88 103 Alexa CSE 72 When we create this ta
    2 min read
    Build a URL Size Reduce App with Django
    Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. In this article, we will learn to build a URL shortener using Django. A URL shortener is used to reduce the size of long URLs. Short URLs are better for sharing purposes. In this article, we will use Bitly API to shorten our URL. For this, we
    5 min read
    Important differences between Python 2.x and Python 3.x with examples
    In this article, we will see some important differences between Python 2.x and Python 3.x with the help of some examples. Differences between Python 2.x and Python 3.x Here, we will see the differences in the following libraries and modules: Division operatorprint functionUnicodexrangeError Handling_future_ modulePython Division operatorIf we are p
    5 min read
    Article Tags :
    Practice Tags :