나는 lambda 함수로 functools.reduce() 함수를 사용하여 연습하고 있습니다. 내가 가지고있는 문제는 계속 오류가 발생한다는 것입니다. 여기 내 코드입니다 : 나는 주위에 괄호를 이동했지만 아무것도 작동하는 것 같다되지<lambda>()은 1 점을받습니다.
TypeError: <lambda>() takes 1 positional argument but 2 were given
: 여기
>>> from functools import reduce
>>> import math
>>> l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> reduce((lambda x: math.sqrt(x)), l)
그리고 출력됩니다.
>>> from functools import reduce
>>> reduce((lambda x, y: x * y), [1, 2, 3, 4])
24
>>> reduce((lambda x, y: x/y), [1, 2, 3, 4])
0.041666666666666664
을하지만 두 번째 예는 두 번째 매개 변수 y를을 가지고 이외의 차이를 볼 수 없습니다 어떤 이유로,이 코드는 잘 작동합니다. 아무도 내가 왜이 오류가 발생하는 조언을 제공 할 수 있습니까?
표시된 두 코드 샘플은 완전히 다른 두 가지 작업을 수행하고 있습니다. 하나는 입력의 제곱근을 얻고 있지만 (잘못 사용함) 다른 하나는 입력을 제곱합니다 (reduce를 올바르게 사용) – smac89
reduce 내장 함수는 인수로 두 개의 인수로 된 다른 함수를 기대합니다. 당신의 람다는 단 하나의 주장 만 가지고 있습니다. https://docs.python.org/2/library/functions.html#reduce – Apollo2020
@ apollo2020은 다음과 같이 말합니다. ** reduce **하려면 ** 2 ** 인수를 취하여 ** 단일 ** 값으로 변환하는 함수가 필요합니다. 당신의 산출물이 정확히 무엇을 기대합니까? – schwobaseggl