코딩이 즐겁다

[파이썬 입문] reduce 함수 사용법 갓벽 가이드 본문

Python

[파이썬 입문] reduce 함수 사용법 갓벽 가이드

코즐 2025. 2. 21. 10:52
반응형

 

  • reduce()는 리스트의 요소를 하나로 축소(누적)하는 함수
  • lambda와 함께 사용하면 간결하지만, 가독성이 떨어질 수 있음.
  • 단순한 합산, 곱셈은 sum(), math.prod() 같은 기본 함수가 더 적절할 수도 있음.
  • 복잡한 연산이 필요한 경우 사용하면 유용.

 


 

파이썬 reduce() 함수란?

파이썬(Python) reduce() 함수반복 가능한(iterable) 객체의 요소들을 누적 연산(aggregation, reduction)하여 단일 값으로 줄이는 함수입니다. 이 함수는 functools 모듈에서 제공되며, 연속적인 이진 연산을 수행하는 데 유용합니다.

 


 

기본 구조

from functools import reduce

reduce(함수, iterable[, 초기값])

🌈 매개 변수

  • 함수: 두 개의 인자를 받아서 하나의 값을 반환하는 함수.
  • iterable: 연산을 수행할 반복 가능한 객체(리스트, 튜플 등).
  • 초기값 (옵션): 연산을 시작할 초기값(없으면 iterable의 첫 번째 값 사용).

 


 

동작 방식

  • 첫 번째와 두 번째 요소를 함수에 적용 → 결과값 생성
  • 결과값과 세 번째 요소를 함수에 적용 → 새로운 결과값 생성
  • 반복하여 최종 하나의 값으로 축소(reduce)
reduce(lambda x, y: x + y, [1, 2, 3, 4])

1 + 2
3 + 3
6 + 4

결과 : 10

 


 

사용 예제

리스트 값 모두 더하기

✅ 예제 코드:

from functools import reduce

numbers = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x + y, numbers)
print(result)  # 출력: 15

lambda x, y: x + y 함수는 두 개의 숫자를 더하는 역할을 함.

 

리스트 값 모두 곱하기

✅ 예제 코드:

from functools import reduce

numbers = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x * y, numbers)
print(result)  # 출력: 120

1 × 2 × 3 × 4 × 5 = 120

 

최대값 찾기

✅ 예제 코드:

from functools import reduce

numbers = [3, 7, 2, 8, 5]
max_value = reduce(lambda x, y: x if x > y else y, numbers)
print(max_value)  # 출력: 8

리스트의 최대값을 구하는 방식 (비교 연산 사용).

 

초기값을 사용하는 경우

✅ 예제 코드:

from functools import reduce

numbers = [1, 2, 3, 4]
result = reduce(lambda x, y: x + y, numbers, 10)
print(result)  # 출력: 20

10 + (1 + 2 + 3 + 4) = 20

초기값으로 10이 먼저 적용됩니다.

 

문자열 연결

✅ 예제 코드:

from functools import reduce

words = ["Python", "is", "awesome"]
sentence = reduce(lambda x, y: x + " " + y, words)
print(sentence)  # 출력: "Python is awesome"

리스트의 문자열을 공백을 포함하여 연결.

 

중첩 리스트 평탄화

✅ 예제 코드:

from functools import reduce

nested_list = [[1, 2], [3, 4], [5, 6]]
flat_list = reduce(lambda x, y: x + y, nested_list)
print(flat_list)  # 출력: [1, 2, 3, 4, 5, 6]

리스트 내부의 리스트를 하나의 리스트로 합치는 예제.

 

딕셔너리 값 누적 계산

✅ 예제 코드:

from functools import reduce

scores = {'Alice': 85, 'Bob': 92, 'Charlie': 88}
total_score = reduce(lambda x, y: x + y, scores.values())
print(total_score)  # 출력: 265

딕셔너리 값(values())을 모두 더하기.

 


 

reduce() vs sum() 비교

numbers = [1, 2, 3, 4, 5]

# reduce 사용
from functools import reduce
result1 = reduce(lambda x, y: x + y, numbers)

# sum 사용 (더 간단)
result2 = sum(numbers)

print(result1)  # 15
print(result2)  # 15

단순 합산(sum())은 reduce()보다 간단하고 가독성이 좋음.

 


 

코즐

파이썬을 배우고 싶은 사람은 누구나 파이썬 학원(국비 지원 파이썬 학원)에 가지 않고도 파이썬 공부를 하면서 실력을 쌓아나갈 수 있다고 생각합니다. 

파이썬 온라인 강의 자료를 올리면서 누구나 쉽게 파이썬을 공부하실 수 있도록 최선을 다해서 설명하도록 하겠습니다.

 


 

 

반응형