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? Если это так, то какова альтернатива?

457   4  

4 ответов:

Он был переведен в functools.

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

from functools import reduce

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

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

from six.moves import reduce

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

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

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

Comments

    Ничего не найдено.