NameError: name 'reduce' is not defined in Python


I’m using Python 3.2. Tried this:

xor = lambda x,y: (x+y)%2
l = reduce(xor, [1,2,3,4])

And got the following error:

l = reduce(xor, [1,2,3,4])
NameError: name 'reduce' is not defined

Tried printing reduce into interactive console – got this error:

NameError: name 'reduce' is not defined

Is reduce really removed in Python 3.2? If that’s the case, what’s the alternative?

Asked By: Sergey



It was moved to functools.

In this case I believe that the following is equivalent:

l = sum([1,2,3,4]) % 2

The only problem with this is that it creates big numbers, but maybe that is better than repeated modulo operations?

Answered By: David M

You can add

from functools import reduce

before you use the reduce.

Answered By: 3heveryday

Or if you use the six library

from six.moves import reduce
Answered By: Azd325

you need to install and import reduce from functools python package

Answered By: Jesvin Vijesh S

Reduce function is not defined in the Python built-in function.
So first, you should import the reduce function

from functools import reduce
Answered By: Haroon Hayat

Use it like this.

# Use reduce function

from functools import reduce

def reduce_func(n1, n2):

    return n1 + n2

data_list = [2, 7, 9, 21, 33]

x = reduce(reduce_func, data_list)

Answered By: Prabhat Pal
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.