NameError: имя 'Reduce' не определено в Python - PullRequest
160 голосов
/ 31 декабря 2011

Я использую Python 3.2. Пробовал это:

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

И получил следующую ошибку:

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

Пробовал печатать reduce в интерактивной консоли - получил эту ошибку:

NameError: name 'reduce' is not defined


reduce действительно удален в Python 3.2? Если это так, то какова альтернатива?

Ответы [ 4 ]

241 голосов
/ 31 декабря 2011

Перемещено в functools.

154 голосов
/ 01 апреля 2015

Вы можете добавить

from functools import reduce

, прежде чем использовать уменьшение.

4 голосов
/ 10 ноября 2015

Или, если вы используете шесть библиотек

from six.moves import reduce
2 голосов
/ 26 марта 2015

В этом случае я считаю, что следующее эквивалентно:

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

Единственная проблема в том, что он создает большие числа, но, может быть, это лучше, чем повторяющиеся операции по модулю?

...