Подтвердить что ты не робот

NameError: имя 'reduce' не определено в Python

Я использую 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? Если это случай, то какая альтернатива?

4b9b3361

Ответ 1

Он был перемещен в functools.

Ответ 2

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

from functools import reduce

прежде чем использовать сокращение.

Ответ 3

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

from six.moves import reduce

Ответ 4

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

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

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