본문 바로가기
프로그래밍/[Python] 파이썬

[Python] reduce() 함수 이해하기 - 파이썬 문법

by GenieIT* 2024. 10. 27.
728x90
반응형
728x90
반응형

 

1. reduce() 함수란?

  • 파이썬의 reduce() 함수반복 가능한(iterable) 객체의 요소들을 하나로 축약(reduce)하여 단일 값을 생성하는 함수입니다. reduce()는 리스트나 튜플 같은 반복 가능한 객체의 모든 요소를 순차적으로 처리하여 누적된 값을 반환합니다. 이 함수는 내장 함수가 아니므로 functools 모듈에서 불러와야 합니다.

 


 

2. 기본 문법

  • function: 두 개의 인수를 받는 함수로, 반복 가능한 객체의 두 요소를 처리하여 하나의 값을 반환해야 합니다. 이 함수는 두 요소를 입력받고, 그 결과를 다시 다음 요소와 연산에 사용합니다.
  • iterable: 리스트, 튜플, 문자열과 같은 반복 가능한 객체입니다.
  • initializer (선택적): 초기값을 지정할 수 있으며, 첫 번째 요소 앞에 추가됩니다. 지정되지 않으면 반복 가능한 객체의 첫 번째 요소가 초기값으로 사용됩니다. (3-2. 아래 예제 참고)
from functools import reduce

reduce(function, iterable[, initializer])

 

2-1. 기본 사용 예제

  • reduce() 함수는 반복 가능한 객체에서 처음 두 개의 요소에 대해 함수를 적용한 후, 그 결과를 다시 세 번째 요소와 함수에 전달하여 처리하는 방식으로 동작합니다. 이 과정이 반복되면서 모든 요소가 처리되면 최종 값이 반환됩니다.
from functools import reduce

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

 

2-2. reduce와 for 루프의 비교

  • reduce() 함수를 사용해 리스트 내의 누적 합계 값을 반환합니다.
from functools import reduce

numbers = [1, 2, 3, 4]
sum_result = reduce(lambda x, y: x + y, numbers)

print(sum_result)  # 출력: 10
  • for문을 사용해 리스트 내의 누적 합계 값을 계산합니다.
numbers = [1, 2, 3, 4]
total = 0

for num in numbers:
    total += num

print(total)  # 출력: 10

 


 

3. 활용 예제

3-1. 숫자의 곱을 계산

  • 리스트 요소들의 누적 곱셈 값을 반환합니다.
from functools import reduce

numbers = [1, 2, 3, 4]
product_result = reduce(lambda x, y: x * y, numbers)

print(product_result)  # 출력: 24

 

3-2. 초기값을 사용하는 예제

  • 처리순서 (10, 1) -> (11, 2) -> (13, 3) -> (16, 4) = 20
  • 초기값 매개변수가 사용되면 처리할 반복 가능 객체 제일 처음에 추가 되어 계산이 시작된다고 생각하면 쉽습니다.
from functools import reduce

numbers = [1, 2, 3, 4]
sum_with_initializer = reduce(lambda x, y: x + y, numbers, 10)

print(sum_with_initializer)  # 출력: 20

 

3-3. 최대값 구하기

  • reduce() 함수를 사용해 최대값을 구하는 예제입니다.
  • 3항 연산자를 활용해 보았습니다.
from functools import reduce

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

max_number = reduce(lambda x, y: x if x > y else y, numbers)
print(max_number)  # 출력: 9

 

3-4. 리스트를 문자열로 연결

  • reduce() 함수를 사용해 리스트 내의 문자열 요소를 연결하는 예제입니다.
from functools import reduce

words = ['Hello', 'World', 'Python']
sentence = reduce(lambda x, y: x + ' ' + y, words)

print(sentence)  # 출력: 'Hello World Python'

 

3-5. 팩토리얼 계산

  • range() 함수를 사용해 1부터 5까지의 누적 곱셈 값을 반환하는 예제입니다.
from functools import reduce

n = 5
factorial = reduce(lambda x, y: x * y, range(1, n + 1))

print(factorial)  # 출력: 120

 


 

 

 

 

 

728x90
반응형