python-lib) functools - reduce

최대 1 분 소요

functools.reduce

  • functools.reduce는 원래 python2에는 built-in으로 있었으나, 지금은 없어진 함수입니다.
  • 동작하는 방식이 약간 특이한데, 만약 우리에게 [A, B, C]라는 리스트가 있다면, A와 B에 대해서 특정 연산을 해주고, 그 결과를 다시 C와 해주고, 이런 식으로 연쇄적으로 처리해주는 함수죠. 다음 그림을 보면 대충 어떤 식으로 돌아가는지 알 수 있습니다.

python_reduce

  • 예를 들어 만약 우리에게 다음과 같이 원소가 리스트인 리스트를 가지고 있다고 하게습니다. 만약, 이 때 모든 원소들을 더해주고 싶다면, functools.reduce를 사용해서 처리해줄 수 있습니다.
from functools import reduce

lst_of_lst = [[1, 2, 3], [5, 4, 6], [8, 4, 9]]

print(reduce(lambda x, y: x + y, lst_of_lst)) 
print(reduce(list.__add__, lst_of_lst))  # same but more robust code
[1, 2, 3, 5, 4, 6, 8, 4, 9]
[1, 2, 3, 5, 4, 6, 8, 4, 9]

댓글남기기