Python/python - pythonic
메서드타입 - class method
메서드타입 - class method
2020.11.27class A: count = 0 def __init__(self): A.count += 1 def exclaim(self): print("I'm an A") @classmethod def kids(cls): print("A has", cls.count, "little objects.") easy_a = A() breezy_a = A() wheezy_a = A() A.kids() class 메서드는 클래스 전체에 영향을 미친다. class 에 어떤 변화는 모든 객체에 영향을 미친다. 클래스 정의에서 함수에 @classmethod 데커레이터가 있다면 이것은 클래스 메서드다. 또한 이 메서드의 첫 번째 매개변수는 클래스 자신이다. 파이썬 에서는 보통 이 클래스의 매개변수를 cls로 쓴다. class는 예약어..
제너레이터를 이용한 지연 실행
제너레이터를 이용한 지연 실행
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 함수..
bisect 모듈을 이용한 가까운 값 찾기
bisect 모듈을 이용한 가까운 값 찾기
2020.11.25# bisect 모듈을 이용해서 가까운 값 찾기 import bisect import random def find_closest(haystack, needle): # bisect.bisect_left는 haystack에서 needle보다 크거나 같은 # 첫 번째 값의 위치를 반환한다. i = bisect.bisect_left(haystack, needle) if i == len(haystack): return i - 1 elif haystack[i] == needle: return i elif i > 0: j = i - 1 # 여기서, i번째 값은 needle보다 크므로(반대로 j번째 값은 needle보다 작다) # i번째 값과 j번째 값 중 어떤 값이 needle에 가까운지 비교하기 위해 # 절대값을 ..
ctyhon - cProfile 모듈 사용하기
ctyhon - cProfile 모듈 사용하기
2020.11.24cprofile 의 -s cumulative 옵션은 각 함수에서 소비한 누적 시간순으로 정렬되어 어떤 함수가 더 느린지 쉽게 확인할수 있다. cProfile의 출력 결과는 코드의 print문이 모두 출력 된 뒤에 화면에 출력된다. python -m cProfile -s cumulative test.py 를 입력하면 누적 소비 시간으로 정렬하면 실행 시간을 주로 소비하는곳이 어딘지 쉽게 확인할 수 있다.
python 으로 루트 제곱근 구하기
python 으로 루트 제곱근 구하기
2020.10.18import math def sqrt(value): return int(math.sqrt(value)) n = int(input()) print(sqrt(n)) math 라이브 러리를 이용해서 sqrt 을 사용하면 입력받은 값의 제곱근을 구할수 있습니다. return 값은 double 형태 이므로 int 형으로 형변환 했습니다 !