본문 바로가기

언어/Python

[ Python ] reduce()와 lambda 사용하기

반응형

파이썬의 functools.reduce 함수는 리스트와 같은 iterable의 모든 요소를 누적하여 하나의 값을 생성하는 데 사용됩니다.
일반적으로 reduce 함수는 두 개의 인수를 받는 함수를 적용하여 iterable의 요소를 순차적으로 처리합니다.
lambda 함수를 사용하여 reduce를 활용하는 방법을 몇 가지 예제로 설명하겠습니다.

1. functools.reduce 함수 사용법

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

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

2. 예제

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

  • lambda 함수를 사용하여 합계 구하기
from functools import reduce

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

# 리스트의 합계를 구함
total = reduce(lambda x, y: x + y, numbers)
print(total)  # 출력: 15

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

  • lambda 함수를 사용하여 곱 구하기
from functools import reduce

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

# 리스트의 곱을 구함
product = reduce(lambda x, y: x * y, numbers)
print(product)  # 출력: 120

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

  • lambda 함수를 사용하여 최댓값 구하기
from functools import reduce

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

# 리스트의 최댓값을 구함
max_value = reduce(lambda x, y: x if x > y else y, numbers)
print(max_value)  # 출력: 5

예제 4: 문자열 연결

  • lambda 함수를 사용하여 문자열 연결하기
from functools import reduce

strings = ['Hello', ' ', 'World', '!']

# 문자열 리스트를 연결
result = reduce(lambda x, y: x + y, strings)
print(result)  # 출력: Hello World!

예제 5: 리스트의 합을 구하면서 초기값 설정하기

  • lambda 함수를 사용하여 초기값 설정
from functools import reduce

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

# 초기값을 10으로 설정하여 리스트의 합을 구함
total = reduce(lambda x, y: x + y, numbers, 10)
print(total)  # 출력: 25

3. 요약

  • functools.reduce 함수는 두 인수를 받는 함수를 사용하여 iterable의 요소들을 누적 처리합니다.
  • lambda 함수를 사용하여 간결하게 reduce 함수에 필요한 누적 함수를 정의할 수 있습니다.
  • 리스트의 합계, 곱, 최댓값 계산 및 문자열 연결 등 다양한 작업에 활용할 수 있습니다.

이와 같은 방법으로 functools.reducelambda 함수를 결합하여 파이썬에서 다양한 누적 작업을 손쉽게 처리할 수 있습니다.

반응형