제너레이터
제너레이터를 이용한 지연 실행
제너레이터를 이용한 지연 실행
2020.11.25""" 메모리 사용 측면에서 제너레이터가 유리한 경우는 현재 값만 필요한 경우 제너레이터를 사용한 피보나치 수열 계산에서도 항시 현재 값만 사용할 뿐 수열 앞쪽에 나온 다른 값을 참조 할수 없다. 이런 알고리즘을 단일 패스 single pass or online 이라고 한다. 이런 특징 때문에 제너레이터를 사용하기 어려운 경우가 있는데, 그럴 때 도움 이 되는 모듈이나 함수가 많다. 그중 표준 라이브러리인 itertools 가 가장 대표적이다. 대표적인 유용한 함수는 다음과 같다. 초 단위로 기록된 20년 치의 데이터를 분석한다고 하면 처리해야 할 데이터의 수는 631,152,000개 입니다. 파일에 저장되어 있고 초단위로 한 줄씩 기록되어 있다. 이 전부를 메모리에 올릴 수는 없는 상황이다. 이데이터에..
파이썬에서 효율적으로 피보나치 수열 접근하기
파이썬에서 효율적으로 피보나치 수열 접근하기
2020.11.25# 500이하의 피보나치 수 중에서 홀수는 몇개인지 세는 방법 def fibonacci_naive(): i, j = 0, 1 cnt = 0 while j 5000: break if f % 2: cnt += 1 return cnt from itertools import islice def fibonacci_succinct(): is_odd = lambda x: x % 2 first_5000 = islice(fibonacci(), 0, 5000) return sum(1 for x in first_5000 if is_odd(x)) 세가지 함수 모두 5000보다 작은 피보나치 수열중에서 홀수의 개수를 구하는 함수입니다. 세가지 함수 모두 속도와 메모리 사용량이 비슷하지만 fibonacci_transform 함수..