분류 전체보기 64

데코레이터와 피보나치

Python의 decorator에 대한 설명으로 대표적인 것이 이름을 출력하는 예제일 것이다. 그러나 실제로 그런 일을 할 일이 별로 없기 때문에 마음에 와닿지가 않아 이해도 잘 되지 않았다. 가장 실용적인 사례로서 DP(dynamic programming)을 위한 memoization의 경우에 활용되는 @cache()라는 decorator를 피보나치 수를 구하는 예제에 적용하여 그 내부 동작을 살펴본다. 먼저 팩토리얼을 구하는 코드를 소개한다. 아래 데코레이터는 @cache로서, DP의 top-down시 많이 활용하는 lru_cache(maxsize=None)과 동일한 결과를 돌려주는 것으로 3.9에서 추가된 함수이다. @cache def factorial(n): return n * factorial(..

string methods

Python의 문자열(string) 관련 함수와 상수를 소개한다. ascii 코드에 속하는 문자, 소문자들, 숫자들, 16진수, 구두점 등을 조건으로 걸어 문자열 관련 처리를 할 경우에 프로그래머가 직접 이를 포함한 array를 만드는 불편함을 덜어주는 유용한 상수라고 할 수 있다. string 모듈 먼저 string 모듈(.py)은 유용한 상수를 많이 포함하고 있다. import string L = [ string.ascii_letters, string.ascii_lowercase, string.ascii_uppercase, string.digits, string.hexdigits, string.punctuation ] for l in L: print(l) ''' abcdefghijklmnopqrstu..

알고리즘/Array 2022.03.03

itertools.islice, tee, groupby, product

islice 형태: itertools.islice(seq, [start,] stop [,step]) 역할: 주어진 sequence를 start:stop:step으로 잘라서 그 원소를 돌려주는 역할을 한다. 예 import itertools for c in itertools.islice('ABCDEFG', 2): print(c, end=" ") print() for c in itertools.islice('ABCDEFG', 2, None): print(c, end=" ") 결과는 다음과 같다. A B C D E F G 즉, 인수 2개만 주면, seq, stop으로 해석하므로, [:2] 까지의 원소를 돌려준다. 그러나 islice만으로는 어떠한 결과를 보여주지 않고 그저 iterator만을 돌려줄 뿐이다. ..

functools.reduce

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..