Published on

Python 대표 컬렉션 연산의 시간복잡도

Authors

파이썬의 대표적인 자료구조 List, Dictionary, Set의 연산별 시간복잡도이다. 최악의 경우를 나타내는 Big-O 표기법을 사용했으며, Tuple의 경우 Immutable하다는 것을 제외하고 List의 연산과 동일하다.

List

연산예시복잡도비고
Indexl[i]O(1)O(1)
Storel[i] = 0O(1)O(1)
Storel[i] = 0O(1)O(1)
Lengthlen(l)O(1)O(1)
Appendl.append(5)O(1)O(1)
Popl.pop()O(1)O(1)l.pop(-1)과 동일
Clearl.clear()O(1)O(1)l = []와 유사
Slicel[a:b]O(ba)O(b-a)슬라이싱하는 요소의 개수에 비례
Extendl.extend(...)O(len(...))O(len(...))추가할 리스트의 크기에 비례
Constructionlist(...)O(len(...))O(len(...))변환할 Iteratble의 길이에 비례
Check ==, !=l1 == l2O(N)O(N)
Insertl[a:b] = ...O(N)O(N)
Deletedel l[i]O(N)O(N)지우려는 요소의 위치에 따름. 최악의 경우 O(N)O(N)
Containmentx in/not in lO(N)O(N)리스트 탐색
Copyl.copy()O(N)O(N)l[:]과 동일
Removel.remove(..)O(N)O(N)리스트/튜플은 O(N)O(N)
Popl.pop(i)O(N)O(N)l.pop(0) 복잡도: O(N)O(N)
Extreme valuemin(l) / max(l)O(N)O(N)리스트 탐색
Reversel.reverse()O(N)O(N)s가 t의 부분집합인지 체크
Iterationfor v in l:O(N)O(N)
Sortl.sort()O(NlogN)O(N \\log N)
Multiplyk*lO(N)O(N)len(l)*l 복잡도: O(N2)O(N^2)

Set

연산예시복잡도비고
Lengthlen(s)O(1)O(1)
Adds.add(5)O(1)O(1)
Containmentx in/not in ssO(1)O(1)리스트/튜플은 O(N)O(N)
Removes.remove(..)O(1)O(1)리스트/튜플은 O(N)O(N)
Discards.discard(..)O(1)O(1)
Pops.pop()O(1)O(1)s = set()과 동일
Clears.clear()O(1)O(1)변환할 Iteratble의 길이에 비례
Constructionset(...)O(len(...))O(len(...))모든 요소가 동일해야 함. 길이가 다른 경우 O(1)O(1)
Check ==, !=s != tO(len(s))O(len(s))
<=, <s <= tO(len(s))O(len(s))s가 t의 부분집합인지 체크
>=, >s >= tO(len(t))O(len(t))t가 s의 부분집합인지 체크
Unions + tO(len(s)+len(t))O(len(s) + len(t))
Intersections & tO(len(s)+len(t))O(len(s) + len(t))
Differences - tO(len(s)+len(t))O(len(s) + len(t))
Symmetric Diffs ^ tO(len(s)+len(t))O(len(s) + len(t))
Iterationfor v in s:O(N)O(N)
Copys.copy()O(N)O(N)

Dict

연산예시복잡도비고
Indexd[k]O(1)O(1)
Stored[k] = vO(1)O(1)
Lengthlen(d)O(1)O(1)
Deletedel d[k]O(1)O(1)
get/setdefaultd.get(k)O(1)O(1)
Popd.pop(k)O(1)O(1)
Pop Itemd.popitem()O(1)O(1)무작위로 요소를 pop
Cleard.clear()O(1)O(1)s = {} 또는 s = dict()와 유사
Viewd.keys()O(1)O(1)d.values()와 동일
Constructiondict(...)O(len(...))O(len(...))
Interationfor k in d:O(N)O(N)

참고 자료