본문 바로가기

Languages/Python

[파이썬 라이브러리] functools 모듈의 reduce 메서드

728x90

 

 

 

reduce()

def reduce(function, iterable, initializer=None):
    it = iter(iterable)
    if initializer is None:
        value = next(it)
    else:
        value = initializer
    for element in it:
        value = function(value, element)
    return value

 

 - reduce(function, iterable[, initializer=None])

 - reduce(함수, 이터러블, 최기값)

 - 위 코드는 reduce 메서드를 나타낸 코드

 - lambda 이용시 첫번째 인자가 누적값(직전 실행의 결과값), 두번째 인자가 새로운 값

 - 첫번째 인자를 accumulation(acc), 두번째 인자를 cutrrent(cur)로 자주 사용

 

 

 

초기값 유무

from functools import reduce

myList = [1, 2, 3, 4, 5]


def add(x, y):
    print(f'{x} + {y}')
    return x + y


print(reduce(add, myList))
print()
print(reduce(add, myList, 0))

 

 - 초기값이 없으면 첫번째 인자를 첫 값으로 넣음. 있으면 해당 값으로 첫번째 인자와 연산함

 

 

 

참조
 - 파이썬 공식 문서
 - 쏠수있어 님의 블로그
반응형