NameError : 이름 'reduce'가 Python에 정의되어 있지 않습니다


187

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정말 파이썬 3.2에서 제거? 이 경우 대안은 무엇입니까?


3
@JBernardo, 올바른 도구는 무엇입니까?
Sergey

답변:



195

추가 할 수 있습니다

from functools import reduce

Reduce를 사용하기 전에.


3
이전 사용자는 이미 질문에 답변했으며 답변은 그의 답변과 동일합니다.
Kathiravan Natarajan

8

또는 6 개의 라이브러리를 사용하는 경우

from six.moves import reduce

3

이 경우 다음이 동일하다고 생각합니다.

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

이것의 유일한 문제는 큰 숫자를 생성하지만 반복되는 모듈로 연산보다 낫다는 것입니다.


반복 된 모듈로 연산은 숫자를 작게 유지하는 데 도움이 될 때 유용합니다. 많은 숫자를 합산하지 않으면 숫자를 합산해도 큰 숫자가 생성되지 않으므로이 경우 도움이되지 않습니다. 특히 그렇게하지 않으면 내장 된 sum 함수를 사용할 수 있기 때문에 사용자 정의 함수를 반복적으로 적용하는 것보다 훨씬 빠르게 실행될 것입니다.
HackerBoss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.