더북(TheBook)

reduce 함수는 인수로 주어진 ‘함수’를 리스트 내에 짝을 이루고 있는 이웃 항목에 적용하여 연산 처리를 하고, 결과를 누적하여 다시 인수로 넘기는 과정을 반복하며, 최종적으로 전체 항목을 처리한 결과를 반환한다. 인수로 넣어서 호출된 ‘함수’는 반드시 2개의 인수를 가져야 하며, 결괏값을 반환해야 한다. ‘리스트’가 최소 4개의 항목을 가지고 있다고 가정해 보자. 이 코드는 다음과 같이 동작한다.

첫 2개의 항목을 ‘함수’의 인수로 넣고, 결괏값을 기억한다.

위 결과와 세 번째 항목을 ‘함수’의 인수로 넣어서 처리된 결과를 기억한다.

위 결과와 네 번째 항목을 인수로 넣어서 처리된 결과를 기억한다.

계속 이 방식대로 값을 처리한다.

다음 예시는 덧셈과 곱셈을 사용했으며, 최종 결괏값을 이해하기 쉽다.

import functools

def add_func(a, b):
    return a + b

def mul_func(a, b):
    return a * b

n = 5
a_list = list(range(1, n + 1))

triangle_num = functools.reduce(add_func, a_list)
fact_num = functools.reduce(mul_func, a_list)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.