Table of Contents
  1. Reduce

Python의 functoolsreduce() 함수에 대해서 알아보도록 하겠습니다.


Reduce

reduce는 누계값과 현재 요소의 값을 받는 함수와, iterable 그리고 초기값을 받는 함수입니다.

1
2
3
4
5
6
7
8
9
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의 정의를 한 줄로 설명하기 어려운데, 사용법을 보면 금방 이해할 수 있습니다.

배열의 모든 원소의 합 구하기
1
2
3
from functools import reduce
a = [1, 2, 3]
total = reduce(lambda acc, cur: acc + cur, a) # ((1 + 2) + 3) = 6
최댓값 구하기
1
2
3
from functools import reduce
a = [1, 2, 3]
total = reduce(lambda pre, cur: cur if pre < cur else pre, a) # 3

reduce는 내부적으로 iterable을 쓰기 때문에 for문 보다 간결하고 성능이 뛰어납니다.