214
votes

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?

5
@JBernardo, what is the right tool?Sergey

5 Answers

226
votes

You can add

from functools import reduce

before you use the reduce.

10
votes

Or if you use the six library

from six.moves import reduce
3
votes

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?

0
votes

you need to install and import reduce from functools python package