05-17 09:12
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Polymolphism
- selenium
- X.org
- Entity
- spring
- dbms
- 백준
- Class
- Reference Type
- 리눅스
- 리눅스 마스터 1급
- literal
- BFS
- OOP
- python
- Binary Search
- External Scheme
- preprocessing
- Operator
- Java
- Entity Set
- Mac
- descriptive statistics
- Inheritance
- Physical Scheme
- Unity
- 셀레니움
- X윈도우
- systemd
- 자바
Archives
- Today
- Total
Byeol Lo
Python functools 함수들 본문
reduce 함수는 리스트 들에 대해 어떠한 연산을 누적하여 수행하고 싶을때 쓸 수 있는 함수이다.
예를 들어 [1,3,5,67,4,5]라는 리스트를 다 더하고 싶다면 다음과 같이 적으면 된다.
from functools import reduce
lst = [1,3,5,67,4,5]
print(reduce(lambda x, y: x+y, lst))
# 85
lambda 식이 아니더라도 사용자 정의 함수로 다가갈 수 있다.
파이썬 3.9에서는 @functools.cache라는 함수가 있는데 데코레이터로 쓴다면 값들을 저장하여 다시 그 연산을 수행할때, 연산을 안하고 바로 호출 할 수 있도록 한다. 이를 메모이제이션이라고 말하는데, 동일한 계산의 반복 수행을 제거하여 최적화하는 기술이다. 계산이 무거울 때 사용가능하다. 하지만 메모리 차지하는 것 또한 고려해야하기에 사용할때 주의하는게 좋다.
@cache
def fibonachi(n) :
return fibonachi(n-1)+fibonachi(n-2) if n>2 else 1
이와는 다르게 메모리 사이즈를 직접 넣을 수 있는 cache가 있는데 @functools.lru_cache이다. 결과를 캐시 하는 데 딕셔너리가 사용된다. maxsize는 기본으로 128mb로 주어진다. lru는 least recently used의 약자이다. 일반적으로 이전에 사용한 값을 재사용 할 때만 사용한다.
@lru_cache
def count_vowels(sentence) :
return sum(sentence.count(vowel) for vowel in 'AEIOUaeiou')
partial 함수는 함수의 인자를 고정하여 사용할 수 있도록 한다. 예를 들어 '10010'은 이진법으로 표현된 문자열 데이터인데 이를 숫자로 나타내기 위해 서는 int('10010', base=2)를 해주어야 한다. 하지만 다음과 같이 사용하면 함수의 재사용이 가능하다.
from functools import partial
basetwo = partial(int, base=2)
basetwo.__doc__ = 'Convert base 2 string to an int.'
basetwo('10010')
'Programming Language > Python' 카테고리의 다른 글
미로찾기 - dfs (0) | 2022.09.02 |
---|---|
백준 많은 직사각형에 대해 외곽만 그리기 (0) | 2022.08.29 |
operator 모듈의 itemgetter, attrgetter 사용하기 (0) | 2022.06.16 |
Numpy 라이브러리 사용 (0) | 2022.06.15 |
셀레니움에서 로딩 기다리기 (0) | 2022.06.13 |
Comments