-
[Python] functools 모듈의 reduce 함수 사용하기언어/파이썬 & 장고 2019. 10. 13. 20:25
reduce 함수는 아래와 같은 파라미터를 받고 있습니다.
reduce(function, iterable, initializer=None)
첫 번째 파라미터는 함수가 들어가게 됩니다. 따라서 람다일 수도 있고 정의해놓은 함수가 될 수도 있습니다. 두 번째 파라미터는 계산을 하고자 하는 리스트가 들어가게 됩니다.
아래는 reduce()의 예제입니다.
from functools import reduce result = reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) # ((((1+2)+3)+4)+5) print(result) # 15
위 예제는 1,2,3,4,5 값을 전부 더한 결과를 반환합니다. 여기서 초기값 100이 존재한다고 하면 아래와 같이 reduce()에 세번째 파라미터를 지정하면 됩니다.
from functools import reduce result = reduce(lambda x, y: x+y, [1, 2, 3, 4, 5], 100) print(result) # 115
reduce()는 입력 받은 컨테이너 타입(iterable)을 지정한 함수에 따라 계산한 후, 단일 값으로 결과를 반환합니다.
reduce()를 사용하여 최댓값을 구할 수 있습니다.
from functools import reduce func = lambda a, b: a if (a > b) else b result = reduce(func, [1, 100, 2, 55]) print(result) # 100