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
반응형
'프로그래밍 > [Python] 파이썬' 카테고리의 다른 글
[Python] 파이썬 try/except문 정리 (0) | 2024.10.29 |
---|---|
[Python] 파이썬의 주요 내장 예외 클래스 (try/except문) (0) | 2024.10.28 |
[Python] filter() 함수 이해하기 - 파이썬 문법 (0) | 2024.10.26 |
[Python] map() 함수 이해하기 - 파이썬 문법 (0) | 2024.10.25 |
[Python] lambda 함수 이해하기 - 파이썬 문법 (0) | 2024.10.24 |