티스토리 뷰
functools는 잘 이용하면 코테나 인터뷰 뿐 아니라 실무에서도 많은 작업을 간편하게 할 수 있도록 도와준다.
구문: functools.reduce(function, iterable[, initializer])
역할: list와 같은 iterable의 값을 앞에서부터 하나씩 function에 넣어 계산하고, 그 결과를 다시 function의 입력값으로 넣어 계산하는 과정을 반복하여 최종적인 값을 돌려준다.
예1. 리스트에 있는 값을 누적해서 계산
import functools
functools.reduce(lambda x, y: x+y, [2,3,4,5], 1) # ((((1+2)+3)+4)+5)
예2. pandas Dataframe에 저장된 값을 통해 기하평균을 구함
data['returns_GA'] = functools.reduce(lambda x, y: x * y,
(data['returns'].shift(-i) + 1 for i in range(5))) ** (1/5) - 1
즉, 이것을
data['returns'].head(10)
Date
2003-12-08 0.000760
2003-12-09 -0.002446
2003-12-10 -0.005327
2003-12-11 -0.005525
2003-12-12 0.002821
2003-12-14 0.000000
2003-12-15 0.005711
2003-12-16 -0.000085
2003-12-17 0.006103
2003-12-18 -0.002696
Name: returns, dtype: float64
이렇게 만든 것임
data['returns_GA'].head(10)
Date
2003-12-08 -0.001949
2003-12-09 -0.002101
2003-12-10 -0.000474
2003-12-11 0.000577
2003-12-12 0.002906
2003-12-14 0.001801
2003-12-15 0.003319
2003-12-16 0.002177
2003-12-17 0.002647
2003-12-18 0.001411
Name: returns_GA, dtype: float64
정리: 원래 iterator를 func을 이용해서 줄여(reduce) 주는 도구(tools)이라고 기억하자. 함수가 인자로 들어가기 때문에 함수형 프로그래밍(functional programming)의 예시이다.
반응형
'IT in General > Python' 카테고리의 다른 글
| Immutable vs mutable (0) | 2023.10.22 |
|---|---|
| Iterator와 Generator 사용방법 (0) | 2023.03.15 |
| any와 all, 그리고 return (0) | 2022.03.25 |
| 데코레이터와 피보나치 (0) | 2022.03.03 |
| itertools.islice, tee, groupby, product (0) | 2022.03.03 |
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 카카오
- BFS
- dp
- nqueens
- OJ
- coupon collectors' problem
- python
- 동전문제
- 다이내믹 프로그래밍
- graph
- 엔지니어
- Union-find
- 빅테크
- connected components
- 코테
- 프림
- memoization
- iterable
- 개발자 채용
- bintrees
- lru_cache
- RTE
- deque
- 합격
- cache
- Kosaraju
- 입출력
- 공부법
- dfs
- 문자열
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
글 보관함