[Python] functools.reduce

functools

functools는 함수를 다루는 함수를 뜻하는 고계 함수(Higher-Order Function)을 지원하는 함수형 언어 모듈이다.

reduce

reduce는 두 인수(arugument)의 함수를 누적 적용하는 메소드이다.

>>> functools.reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])
15

위의 코드 결과는 ((((1+2)+3)+4)+5)이다.

가독성을 높이기 위해 operator 모듈을 활용할 수도 있다.

>>> from operator import add, mul
>>> functools.reduce(add, [1, 2, 3, 4, 5])
15
>>> functools.reduce(mul, [1, 2, 3, 4, 5])
120

숫자형 리스트를 단일 값으로 병합하기

>>> a = [1, 2, 3, 4, 5]
>>> ''.join(str(e) for e in a)
'12345'
>>> ''.join(map(str, a))
'12345'
>>> functools.reduce(lambda x, y: 10 * x + y, a, 0) # 숫자로 바로 변경
12345

좋은 웹페이지 즐겨찾기