본문 바로가기
Computer & Program/python

[python] reduce 함수

by TDRemon 2024. 2. 15.
반응형

안녕하세요. TDR입니다.

오늘은 python에서의 reduce 함수에 대해서 정리해 보겠습니다.

reduce 함수는 쉽게 설명하면, 반복 가능한 객체에 저장된 숫자(numeric)들을 받아서 모두 더한 값을 반환해주는 함수 입니다.

reduce를 쓰지 않고 일반적인 방법으로 구현을 한다면 아래와 같은 형태가 됩니다.

def accumulate(x, y):
  return x + y

list_obj = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 값을 누적 시작 전의 초기값 설정
init_value = 1
res = init_value

for i in list_obj:
  res = accumulate(res, i)
	
print(res)	# 46

위 코드를 reduce를 써서 변경을 하면 다음과 같이 할 수 있습니다.

# python2까지는 내장 함수였으나 python3부터는 reduce 함수는 기본 내장 함수가 아니기 때문에
# 아래와 같이 import 해줘야 함
from functools import reduce

def accumulate(x, y):
  return x + y

# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]을 생성
list_obj = list(range(1, 10))
init_value = 1

# reduce(<호출할 함수>, <반복 가능한 객체>, [<초기 값>])
res = reduce(accumulate, list_obj, init_value)
print(res)	# 46

reduce 함수를 들여다보면 알 수 있는 내용인데 <호출할 함수>는 변수를 2개 밖에 받을 수 없습니다. 만약 전달할 매개변수가 3개 이상이라면 reduce 함수는 사용이 불가하고, 위에 있는 일반적인 방법으로 사용하시면 됩니다.

반응형

'Computer & Program > python' 카테고리의 다른 글

[python] closure(클로저)  (0) 2024.02.17
[python] lambda(람다)  (0) 2024.02.16
[python] filter 함수  (0) 2024.02.14
[python] File I/O  (0) 2024.02.03
[python] for 반복문  (0) 2024.02.02

댓글