본문 바로가기

Python

(72)
[Python] Collections (deque, OrderedDict, defaultdict, Counter) Collections은 자료구조에 대한 기본 모듈을 포함하고 있다. from collections import deque from collections import OrderedDict from collections import defaultdict from collections import Counter 1. deque 효율적 메모리 구조로 기존 list보다 처리 속도가 빠르다. Deque는 Double-ended Queue이다. Double-ended는 양 끝에 elements를 추가/삭제를 지원한다는 의미이다. 내부적으로 deque는 double-lined list로 구현되어 있다. 그래서 양 끝의 요소의 추가/삭제가 O(1)을 만족한다. 덱과 다르게 python의 리스트는 fixed size me..
[Python] Data Type (list, tuple, dictionary, string) 파이썬 data type인 list, tuple, dictionary, string에 대해서 정리하려고 한다. 1. list 다른 프로그래밍 언어의 '배열(array)'과 비슷한 성질을 갖는 data type이다. list는 쉼표로 data를 분리하여 대괄호로 묶어주어 생성할 수 있다. a = [10, 20, 30, 40, 50] 이러한 list의 각각의 data를 참조하기 위해서는 data의 위치를 나타내주는 index를 사용하며 0부터 시작한다. 파이썬에서는 마이너스(-) index를 지원하여 리스트의 마지막부터 역순으로 값을 참조할 수 있다. (머신러닝 코드에서 slice와 함께 자주 사용된다.) # index 0 1 2 3 4 # value 10 20 30 40 50 # index -5 -4 -3..
[Python] itertools 모듈: 순열(permutations), 조합(combinations), 곱집합(product) 사용전 주의사항: permutations, combinations, product 세 메소드 모두 generator이기 때문에 list()로 캐스팅하여 다른 곳에 저장해두지 않으면 한번의 루핑 이후 사라지게 됩니다. 1. itertools.permutations(iterable, r=None) iterable에서 길이 r에 해당하는 순열을 리턴하는 함수이다. r이 지정되지 않았거나 None이면, r의 기본값은 iterable의 길이이며 가능한 모든 최대 길이 순열이 생성된다. 순열(permutation) 튜플은 입력 iterable의 순서에 따라 사전식 순서로 방출된다. 따라서, 입력 iterable이 정렬되어 있으면, 순열 튜플이 정렬된 순서로 생성된다. 리턴값은 객체이며 경우의 수에 대한 쌍을 tup..
[Python] set (집합 자료형) 집합은 중복을 허용하지 않고, 순서가 없다는 특징을 갖고 있다. 집합은 리스트 혹은 문자열을 이용해서 초기화할 수 있다. 이때 set() 함수를 이용한다. 혹은 중괄호({}) 안에 각 원소를 콤마(,)를 기준으로 구분하여 삽입함으로써 초기화할 수 있다. # 집합 자료형 초기화 방법 1 data = set([1, 1, 2, 3, 4, 4, 5]) print(data) # {1, 2, 3, 4, 5} # 집합 자료형 초기화 방법 2 data = {1, 1, 2, 3, 4, 4, 5} print(data) # {1, 2, 3, 4, 5} 데이터의 조회 및 수정에 있어서 O(1)의 시간에 처리할 수 있다. 집합 자료형의 연산에는 합집합, 교집합, 차집합이 있다. 집합 자료형 관련 함수 data = set([1,..
[Python] 우선순위 큐 (PriorityQueue) PriorityQueue는 heapq를 사용해 구현되어 있다. #cpython/Lib/queue.py from heapq import heappush, heappop class PriorityQueue(Queue): '''Variant of Queue that retrieves open entries in priority order (lowest first). Entries are typically tuples of the form: (priority number, data). ''' def _init(self, maxsize): self.queue = [] def _qsize(self): return len(self.queue) def _put(self, item): heappush(self.queue..
[Python] enumerate 와 zip 1. enumerate enumerate는 열거하다라는 의미로 list의 element를 추출할 때 번호를 붙여서 추출하는 방법이다. 예시1 for i, v in enumerate(['tic', 'tac', 'toe']): print(i, v) #0 tic #1 tac #2 toe 예시2 mylsit = ["a", "b", "c", "d"] li = list(enumerat(mylist)) print(li) #[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')] 예시3 exp = {i:j for i, j in enumerate('This is the example of enumerate.'.split())} print(exp) #{0: 'This', 1: 'is', 2: 'the', ..
[Python] List Comprehension list comprehension은 기존 list를 사용하여 간단히 다른 list를 만드는 기법이다. 즉, 리스트를 쉽게, 짧게 한 줄로 만들 수 있는 파이썬 문법이다. 일반적으로 for + append 보다 속도가 빠르다. 예시1 number = [] for i in range(10): number.append(i) print(number) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 위의 for + append를 list comprehension형태로 나타내면 다음과 같다. number = [i for i in range(10)] print(number) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 예시2 filter를 사용한 list comprehension이다. 조건(..
[Python] iterable과 iterator 1. Iterable iterable 객체: 반복 가능한 객체 대표적으로 iterable한 타입 - list, dict, set, str, bytes, tuple, range collections.iterable에 속한 instance인지의 확인을 통해 iterable 객체인지 판별할 수 있다. >>> import collections # iterable 한 타입 >>> var_list = [1, 3, 5, 7] >>> isinstance(var_list, collections.Iterable) True >>> var_dict = {"a": 1, "b":1} >>> isinstance(var_dict, collections.Iterable) True >>> var_set = {1, 3} >>> isins..