본문 바로가기

언어/Python

[ Python ] reduce()와 일반 함수 사용하기

반응형

functools.reduce 함수는 파이썬에서 여러 요소를 누적하여 단일 결과를 생성하는 데 사용됩니다.
이 함수는 리스트나 다른 iterable의 요소들을 누적하여 하나의 값으로 합산, 곱셈, 최대값 계산 등의 작업을 할 때 유용합니다.
일반적으로 reduce 함수를 사용할 때 람다 함수가 많이 사용되지만, 람다 함수를 사용하지 않고도 사용자 정의 함수를 통해 reduce를 활용할 수 있습니다.

1. reduce 함수 사용법

functools.reduce는 다음과 같은 형식으로 사용됩니다:

functools.reduce(function, iterable[, initializer])
  • function: iterable의 요소들을 처리하는 데 사용할 함수입니다. 이 함수는 두 개의 인수를 받아야 합니다.
  • iterable: 누적 작업을 수행할 iterable 객체입니다.
  • initializer (선택적): 초기값을 설정할 수 있으며, 이 경우 첫 번째 요소와 함께 연산에 사용됩니다.

2. 예제

예제 1: 리스트의 합계 구하기

람다 함수 대신 사용자 정의 함수를 사용하여 리스트의 합계를 구하는 방법을 살펴보겠습니다.

사용자 정의 함수로 합계 구하기

from functools import reduce

# 두 숫자의 합을 반환하는 함수
def add(x, y):
    return x + y

# 리스트의 합계를 구함
numbers = [1, 2, 3, 4, 5]
total = reduce(add, numbers)
print(total)  # 출력: 15

예제 2: 리스트의 곱 구하기

리스트의 모든 요소를 곱하는 예제입니다.

사용자 정의 함수로 곱 구하기

from functools import reduce

# 두 숫자의 곱을 반환하는 함수
def multiply(x, y):
    return x * y

# 리스트의 곱을 구함
numbers = [1, 2, 3, 4, 5]
product = reduce(multiply, numbers)
print(product)  # 출력: 120

예제 3: 리스트의 최댓값 구하기

리스트에서 최댓값을 찾는 예제입니다.

사용자 정의 함수로 최댓값 구하기

from functools import reduce

# 두 숫자 중 큰 값을 반환하는 함수
def maximum(x, y):
    return x if x > y else y

# 리스트의 최댓값을 구함
numbers = [1, 2, 3, 4, 5]
max_value = reduce(maximum, numbers)
print(max_value)  # 출력: 5

예제 4: 문자열 연결

리스트의 문자열을 연결하는 예제입니다.

사용자 정의 함수로 문자열 연결하기

from functools import reduce

# 두 문자열을 연결하는 함수
def concatenate(x, y):
    return x + y

# 문자열 리스트를 연결
strings = ['Hello', ' ', 'World', '!']
result = reduce(concatenate, strings)
print(result)  # 출력: Hello World!

2. 요약

functools.reduce 함수는 사용자 정의 함수를 사용하여 iterable의 요소들을 누적하여 하나의 값을 도출할 때 유용합니다.
합계, 곱, 최댓값, 문자열 연결 등 다양한 누적 작업을 수행할 수 있습니다.
이를 통해 reduce의 강력한 기능을 람다 함수 없이도 활용할 수 있습니다.

반응형