Ответ 1
Он был перемещен в functools
.
Я использую 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? Если это случай, то какая альтернатива?
Он был перемещен в functools
.
Вы можете добавить
from functools import reduce
прежде чем использовать сокращение.
Или если вы используете шесть библиотек
from six.moves import reduce
В этом случае я считаю, что следующее эквивалентно:
l = sum([1,2,3,4]) % 2
Единственная проблема заключается в том, что он создает большие числа, но, может быть, это лучше, чем повторные операции с модулями?