- Published on
Python 대표 컬렉션 연산의 시간복잡도
- Authors
- Name
- 코딩하는펭귄
파이썬의 대표적인 자료구조 List, Dictionary, Set의 연산별 시간복잡도이다. 최악의 경우를 나타내는 Big-O 표기법을 사용했으며, Tuple의 경우 Immutable하다는 것을 제외하고 List의 연산과 동일하다.
List
연산 | 예시 | 복잡도 | 비고 |
---|---|---|---|
Index | l[i] | ||
Store | l[i] = 0 | ||
Store | l[i] = 0 | ||
Length | len(l) | ||
Append | l.append(5) | ||
Pop | l.pop() | l.pop(-1) 과 동일 | |
Clear | l.clear() | l = [] 와 유사 | |
Slice | l[a:b] | 슬라이싱하는 요소의 개수에 비례 | |
Extend | l.extend(...) | 추가할 리스트의 크기에 비례 | |
Construction | list(...) | 변환할 Iteratble의 길이에 비례 | |
Check ==, != | l1 == l2 | ||
Insert | l[a:b] = ... | ||
Delete | del l[i] | 지우려는 요소의 위치에 따름. 최악의 경우 | |
Containment | x in/not in l | 리스트 탐색 | |
Copy | l.copy() | l[:] 과 동일 | |
Remove | l.remove(..) | 리스트/튜플은 | |
Pop | l.pop(i) | l.pop(0) 복잡도: | |
Extreme value | min(l) / max(l) | 리스트 탐색 | |
Reverse | l.reverse() | s가 t의 부분집합인지 체크 | |
Iteration | for v in l: | ||
Sort | l.sort() | ||
Multiply | k*l | len(l)*l 복잡도: |
Set
연산 | 예시 | 복잡도 | 비고 |
---|---|---|---|
Length | len(s) | ||
Add | s.add(5) | ||
Containment | x in/not in ss | 리스트/튜플은 | |
Remove | s.remove(..) | 리스트/튜플은 | |
Discard | s.discard(..) | ||
Pop | s.pop() | s = set() 과 동일 | |
Clear | s.clear() | 변환할 Iteratble의 길이에 비례 | |
Construction | set(...) | 모든 요소가 동일해야 함. 길이가 다른 경우 | |
Check ==, != | s != t | ||
<=, < | s <= t | s가 t의 부분집합인지 체크 | |
>=, > | s >= t | t가 s의 부분집합인지 체크 | |
Union | s + t | ||
Intersection | s & t | ||
Difference | s - t | ||
Symmetric Diff | s ^ t | ||
Iteration | for v in s: | ||
Copy | s.copy() |
Dict
연산 | 예시 | 복잡도 | 비고 |
---|---|---|---|
Index | d[k] | ||
Store | d[k] = v | ||
Length | len(d) | ||
Delete | del d[k] | ||
get/setdefault | d.get(k) | ||
Pop | d.pop(k) | ||
Pop Item | d.popitem() | 무작위로 요소를 pop | |
Clear | d.clear() | s = {} 또는 s = dict() 와 유사 | |
View | d.keys() | d.values() 와 동일 | |
Construction | dict(...) | ||
Interation | for k in d: |