without haste but without rest

[python] reduce 함수 이해하기 본문

ProgrammingLanguage/Python

[python] reduce 함수 이해하기

JinungKim 2021. 7. 19. 21:39

ps를 하다보면 입력 과정에서 map은 수도없이 많이 쓰게 돼서 꽤 익숙해지는데,

reduce는 생각보다 사용할 일이 적어서인지 자꾸 까먹는다.


reduce 사용 예시

2차원 리스트 1차원으로 이어붙여 만들기

from functools import reduce

array_2dim = [[x]*x for x in range(5)]
array_1dim = reduce(lambda x, y: x+y, array_2dim)


print(array_2dim)
#[[], [1], [2, 2], [3, 3, 3], [4, 4, 4, 4]]

print(array_1dim)
#[1, 2, 2, 3, 3, 3, 4, 4, 4, 4]

 

reduce 함수로 2차원 리스트의 각 요소(1차원 리스트)들을 더하고 반환했다.

*파이썬에서 리스트 + 연산은 리스트를 이어 붙인다.

 

 


간단한 맵리듀스 예제

from functools import reduce


arr = [i for i in range(10)]
print(arr)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


ans = list(map(lambda x: x+1, arr))
print(ans)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


ans = reduce(lambda x, y: x+y, ans)
print(ans)
# 55

 

 

Comments