반응형
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
의 강력한 기능을 람다 함수 없이도 활용할 수 있습니다.
반응형
'언어 > Python' 카테고리의 다른 글
[ Python ] 리스트 함축(List Comprehension) 사용하기 (0) | 2024.07.04 |
---|---|
[ Python ] reduce()와 lambda 사용하기 (1) | 2024.07.04 |
[ Python ] 리스트에서 데이터 가져오기 (0) | 2024.07.04 |
[ Python ] 리스트 (List) 수정하기 (0) | 2024.07.04 |
[ Python ] 리스트에서 slicing으로 데이터 대입하기 (0) | 2024.07.04 |