73. 파이썬 functools.reduce 표준 라이브러리

  • 네이버 블로그 공유하기
  • 카카오톡 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기

지난 시간에는 파이썬 표준 라이브러리 itertools.permutations 와 itertools.combinations 에 대해 알아보았습니다.
이번 포스팅에서는 파이썬 표준 라이브러리 중 functools.reduce 에 대해 공부해 보도록 하겠습니다.

파이썬 표준 라이브러리

functools.reduce

functools.reduce 함수는 functools.reduce(function, iterable) 의 형태로 사용하며 function 을 반복 가능한 객체인 iterable 의 요소에 차례 차례 좌에서 우로 누적해서 적용하며 이 객체를 하나의 값으로 줄여주는 함수 입니다.

아래 코드는 입력 인수인 num 의 요소를 모두 더해서 리턴해 주는 add 함수 입니다.

Python
#  add_num.py
def add(num):
    result = 0
    for i in num:
        result += i
    return result

num = [1, 2, 3, 4, 5]
result = add(num)
print(result)

위의 코드를 실행해 보면 아래와 같은 결과가 나옵니다.

Python
(py_study_31010) D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST>python add_num.py
15

누적 계산하기

위 코드를 functools.reduce() 함수를 이용해서 동일하게 동작하는 코드를 만들어 보겠습니다.
functools.reduce() 함수를 사용한 코드는 아래의 코드입니다.

Python
#  add_num_functools.py
import functools

num = [1, 2, 3, 4, 5]
result = functools.reduce(lambda x, y: x + y, num)
print(result)

위 코드를 실행해 보면 이전에 작성했던 코드와 마찬가지로 동일하게 15 가 출력 되는 것을 보실 수 있습니다.
이렇게 functools.reduce() 를 사용하게 되면 reduce() 에 선언했던 lambda 함수를 num 요소에 하나씩 차례대로 누적해서 적용해서 ((((1 + 2) + 3) + 4) + 5) 의 형태로 계산을 하게 됩니다.

Python
(py_study_31010) D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST>python add_num_functools.py
15

결국 앞에서 만들었던 add_num.py 와 동일한 역할을 하게 됩니다.

최대값 구하기

이번에는 functools.reduce() 함수를 이용해 최대값을 구해보도록 하겠습니다.

Python
#  max_num_functools.py
import functools

num = [3, 2, 1, 8, 6, 7]
max_num = functools.reduce(lambda x, y: x if x > y else y, num)
print(max_num)

위 코드에서 처럼 [3, 2, 1, 8, 6, 7] 의 리스트 요소를 차례대로 reduce() 의 lamba 함수로 전달해서 두 값 중 큰 값을 선택하고 이렇게 반복하면서 마지막에는 남은 최대값을 리턴을 하게 됩니다.

Python
(py_study_31010) D:\Dropbox\02.My_Job\80.Study\01.Python\00.study_python_3.11.0\01.TEST>python max_num_functools.py
8

최소값 구하기

Python
#  min_num_functools.py
import functools

num = [3, 2, 1, 8, 6, 7]
max_num = functools.reduce(lambda x, y: x if x < y else y, num)
print(max_num)

위 코드 처럼 부등호의 방향만 바뀌면 리스트 요소들의 최소값을 구할 수도 있습니다.

  • 이 포스팅은 ‘위키독스’ 의 ‘점프 투 파이썬‘ 전자책을 구매하여 독학하기 위한 자료로 작성했습니다.

73. 파이썬 functools.reduce 표준 라이브러리

Leave a Comment