Hey Tech
[파이썬] reduce 함수에 대해 알아보자(feat. lambda 표현식) 본문
728x90
반응형
오늘은 reduce 함수에 대해 알아봅니다. reduce 함수와 람다 표현식을 함께 사용하면 코드를 간결하고 직관적으로 작성하는 데 큰 도움이 됩니다. 람다 표현식에 대한 포스팅은 아래 링크를 참고해 주세요!
heytech.tistory.com/17
reduce 함수란?
reduce 함수는 *반복 가능한 객체(iterable object) 내 각 요소를 연산한 뒤 이전 연산 결과들과 누적해서 반환해 주는 함수입니다.
*반복 가능한 객체(iterable object)란 말 그대로 반복이 가능한 객체로서 요소가 하나의 객체에 여러 개가 들어있고, 한 번에 하나의 요소씩 사용할 수 있는 객체를 말합니다. 대표적으로는 문자열(string), 리스트(list), 딕셔너리(dictionary), 세트(set)가 있습니다.
from functools import reduce
참고로 파이썬3부터는 reduce가 내장 함수가 아니기 때문에 functools 모듈에서 reduce 함수를 불러와야 합니다.
연습 문제
Q. 리스트에 1부터 20까지의 정수가 담겼을 때, 해당 리스트의 모든 요소의 합을 출력하는 코드를 작성하시오.
(1) reduce 함수를 사용하지 않은 코드
def SumFunction(x, y):
return x + y
target = list(range(1, 21))
result = 0
for value in target:
result = SumFunction(result, value)
print(result) # 실행 결과: 210
누적 합계를 구하기 위해 함수를 따로 정의하고 반복문을 활용하였습니다.
(2) reduce 함수를 사용한 코드
from functools import reduce
def SumFunction(x, y):
return x + y
target = list(range(1, 21))
print(reduce(SumFunction, target)) # 실행 결과: 210
앞서 함수 sum_function 에서 "x + y" 값을 리턴하도록 정의하였기 때문에, 반복 가능한 객체(target)에서 그림 1 과 같이 요소 두 개씩 더한 값을 누적합니다.
(3) reduce 함수와 lambda 표현식을 사용한 코드
from functools import reduce
target = list(range(1, 21))
print(reduce(lambda x, y: x + y, target)) # 실행 결과: 210
reduce 함수와 lambda 표현식을 활용하면 위와 같이 코드를 더욱 간결하고 직관적으로 작성하실 수 있습니다.
참고할 만한 포스팅
1. [파이썬] lambda 함수는 언제, 어떻게 쓸까?
2. [파이썬] map 함수에 대해 알아보자(Feat. lambda 표현식)
3. [파이썬] filter 함수에 대해 알아보자(feat. lambda 표현식)
4. [파이썬] reduce 함수에 대해 알아보자(feat. lambda 표현식)
포스팅 내용에 오류가 있는 부분이 있을 경우 댓글을 남겨 주시면 감사드리겠습니다.
그럼 오늘도 건강한 하루 보내시길 바랍니다 :-)
고맙습니다.
728x90
반응형
'SW 개발 > Python' 카테고리의 다른 글
[파이썬] 리스트 컴프리헨션(list comprehension)에 대해 알아보자! (0) | 2021.04.13 |
---|---|
[파이썬] 내장 함수를 활용한 데이터 정렬하기! (sorted, sort 함수) (0) | 2021.03.15 |
[파이썬] filter 함수에 대해 알아보자(feat. lambda 표현식) (0) | 2021.02.25 |
[파이썬] map 함수에 대해 알아보자(Feat. lambda 표현식) (0) | 2021.02.24 |
[주피터 노트북] 유용한 단축키 모음! (0) | 2021.02.08 |