발생일: 2015.12.28 키워드: python, sqlite3, 컬럼 목록, 컬럼 이름, column name, get column list 문제: slite3 에서 조회한 목록의 컬럼 목록을 가져오려고 한다. 해결책: cursor 인스턴스의 description 값을 활용하면 된다. 람다로 가져오거나, names = list(map(lambda x: x[0], cursor.description)) list comprehension으로도가져올수있다. names = [description[0] for description in cursor.description] 참고: http://stackoverflow.com/questions/7831371/is-there-a-way-to-get-a-list-of-..
발생일: 2015.10.29 키워드: heapq, heapq.nlargest, heapq.nsmallest 문제: 컬렉션 내부에서 가장 크거나 작은 N개의 아이템을 찾으려고 한다. 해결책: import heapq nums = [1, 8, 3, -5, 4, 99, -4, 0] # heapq 모듈에 이 용도에 적합한 nlargest()와 nsmallest() 함수가 있다. # - heapq.nlargest(n, iterable, key=None) # - heapq.nsmallest(n, iterable, key=None) print(heapq.nlargest(3, nums)) #-> [99, 8, 4] print(heapq.nsmallest(3, nums)) #-> [-5, -4, 0] # 좀 더 복잡한 구..
발생일: 2015.10.22 키워드: collections.deque, deque 문제: 순환이나 프로세싱 중 마지막으로 발견한 N개의 아이템 유지하고 싶다. 해결책: # 이런 목적으론 collection.deque 가 가장 적합한다. # deque는 큐 구조체가 필요할 때 사용할 수 있다. # deque(maxlen=N)으로 고정 크기 큐를 생성할 수 있으며, # 큐가 찬 상태에서 새 아이템을 넣으면 첫 아이템이 자동으로 삭제된다. from collections import deque q = deque(maxlen=3) q.append(1) q.append(2) q.append(3) print(q) #-> deque([1, 2, 3], maxlen=3) q.append(4) print(q) #-> de..
발생일: 2015.10.22 키워드: splat operator, 스플랫, 언패킹, unpacking, 튜플 나누기, 배열 나누기, 문자열 나누기 문제: N개의 요소를 가진 튜플이나 시퀀스를 N개나 그 이하의 요소로 나누려고 한다. 해결책: # 아래와 같이 좌측에 여러 개의 변수를 선언하는 방법으로 언패킹할 수 있다. p = (4, 5) x, y = p print(x) #-> 4 print(y) #-> 5 # 언패킹은 튜플이나 리스트 뿐 아니라 순환 가능한 모든 객체에 적용할 수 있다. # 여기엔 문자열, 파일, 이터레이터, 제너레이터가 포함된다. s = 'Hello' a, b, c, d, e = s print(a) #-> 'H' print(b) #-> 'e' print(c) #-> 'l' print(d..
발생일: 2015.10.21 키워드: python, pyenv, python version manager, 파이썬 버전 매니저, 엘 캐피탄, el capitan 문제: OS X 엘 캐피탄에서 파이썬 버전 매니저로 새 버전을 설치하려고 한다. 해결책: pyenv - https://github.com/yyuu/pyenv - rbenv 를 포크해서 만든 파이썬 버전 매니저 brew 로 pyenv 를 설치하고, 새 버전의 파이썬(여기서는 3.5.0)을 설치하면 된다. $ brew updqte $ brew install pyenv $ pyenv install 3.5.0 잘 풀리지 않는다면, - 엘 캐피탄에서 brew 를 설치할 때 권한 이슈 - 엘 캐피탄에서 SIP (System Integrity Protecti..
발생일: 2013.01.09 문제: 지난 노트들을 정리하다가 오래 전에 기록해뒀던 2/8/16 진수 표현에 대한 메모를 발견했다. 진수 변환이나 비트 연산은 참 볼 때마다 새롭다. ㅎㅎ 굳이 이 기분을 표현해보자면,..꼭 천 단위로 숫자를 끊어 읽는 것 같다.아주 익숙하지만, 얼마인지 알려면 맨 끝에서부터 다시 세어봐야 하는 것 같달까.. -_-a(예: 142,324,242,000) 여튼, 얼마 전 파이썬을 익히면서 비트 연산 활용법에 대한 부분도 공부한 적이 있어,예전 노트와 묶어 메모해두려고 한다. 해결책: 기수(base)B진법: 기수를 B로 정수를 표현하는 방법 (예: 10진법, 16진법) 10진수: Decimal (23)2진수: Binary (10111)8진수: Octal (0으로 시작한다. 02..
발생일: 2012.10.31 문제: 지난 주부터 파이썬 스터디를 하고 있는데,오늘은 아주 간단한 파일 처리 코드를 익혔다. 파일을 열 때 파일 모드를 파라미터로 넣는데,파일 모드는 정말 봐도 까먹고 봐도 까먹고 한다. 조금 헷갈리는 것도 있어서, 이번에 정확하게 정리해두려고 한다. 해결책: 파이썬의 내장 opne() 함수의 파일 오픈 모드는, C의 fopen()과 정확하게 일치한다.파일 모드에 관한 정의는 BSD fopen 매뉴얼 페이지에 정확하게 설명되어 있다. 각 파일 모드가 어떤 작업을 하는지, 파일을 열었을 때 커서가 어디에 있는지정확하게 알아두자. ``r'' Open text file for reading. The stream is positioned at the beginning of the ..