Related Articles

# Complexity Cheat Sheet for Python Operations

• Last Updated : 26 Mar, 2020

Prerequisite: List, Dictionaries, Sets

Python built-in data structures like list, sets, dictionaries provide a large number of operations making it easier to write concise code but not being aware of their complexity can result in unexpected slow behavior of your python code.

For example:

A simple dictionary lookup Operation can be done by either :

`if key in d:`

or

`if dict.get(key)`

The first has a time complexity of `O(N)` and the latter has `O(1)` which can create a lot of difference in nested statements.

Important points:

1. Lists are similiar to arrays with bidirectional adding and deleting capability.
2. Dictionaries and Set use Hash Tables for insertion/deletion and lookup operations.

This Cheatsheet can be referred for choosing operations that are efficient with respect to time.

## List Operations

OperationExamplesComplexity class
Average caseAmortised Worst case
Appendl.append(item)O(1)O(1)
Clearl.clear()O(1)O(1)
Containmentitem in/not in lO(N)O(N)
Copyl.copy()O(N)O(N)
Deletedel l[i]O(N)O(N)
Extendl.extend(…)O(N)O(N)
Equalityl1==l2, l1!=l2O(N)O(N)
Indexl[i]O(1)O(1)
Iterationfor item in l:O(N)O(N)
Lengthlen(l)O(1)O(1)
Multiplyk*lO(k*N)O(k*N)
Min, Maxmin(l), max(l)O(N)O(N)
Pop from endl.pop(-1)O(1)O(1)
Pop intermediatel.pop(item)O(N)O(N)Removel.remove(…)O(N)O(N)
Reversel.reverse()O(N)O(N)
Slicel[x:y]O(y-x)O(y-x)
Sortl.sort()O(N*log(N))O(N*log(N))
Storel[i]=itemO(1)O(1)

Note: Tuples have the same operations (non-mutable) and complexities.

## Dictionary Operations

OperationExamplesComplexity class
Average caseAmortised Worst case
Cleard.clear()O(1)O(1)
Constructiondict(…)O(len(d))O(len(d))
Deletedel d[k]O(1)O(N)
Getd.get()O(1)O(N)
Iteration(key, value, item)for item in d:O(N)O(N)
Lengthlen(d)O(1)O(1)
Popd.pop(item)O(1)O(N)
Pop Itemd.popitem()O(1)O(1)
Returning Viewsd.keys()O(1)O(1)
Fromkeysd.fromkeys(seq)O(len(seq))O(len(seq))

Note: Defaultdict has operations same as dict with same time complexity as it inherits from dict.

## Set Operations

OperationExamplesComplexity class
Average caseAmortised Worst case
Clears.clear()O(1)O(1)
Copys.copy()O(N)O(N)
Containmentitem in/not in sO(1)O(N)
Creationset(…)O(len(s))O(len(s))
Differences1-s2O(len(s1))O(len(s1))
Equalitys1==s2, s1!=s2O(min(len(s1), len(s2)))O(min(len(s1), len(s2)))
Intersections1 & s2O(min(len(s1), len(s2)))O(min(len(s1), len(s2)))
Iterationfor item in s:O(N)O(N)
Is Subsets1<=s2O(len(s1))O(len(s1))
Is Supersets1>=s2O(len(s2))O(len(s1))
Pops.pop()O(1)O(N)
Unions1|s2O(len(s1)+len(s2))
Symmetric Differences1^s2len(s1)O(len(s1)*len(s2))