Code Reference

Lists

Python · Reference cheat sheet

Lists

Python · Reference cheat sheet


📋 Overview

A list is an ordered, mutable sequence. Use for collections that grow, shrink, or change in place. Prefer list methods and comprehensions over manual index loops. Heterogeneous types are allowed; typed code usually keeps one element type.

🔧 Core concepts

Create / access

OperationExample
Create[1, 2], list(iterable), []
Index / slicexs[0], xs[-1], xs[1:3], xs[i:j:k]
Assign slicexs[1:3] = [9, 8]; can change length
Unpacka, *mid, z = xs

Instance methods

MethodMutates?Notes
append(x)yesAdd one at end — O(1) amort.
extend(it)yesAdd all from iterable; xs += it
insert(i, x)yesInsert before index i — O(n)
pop([i])yesRemove/return at i (default last)
remove(x)yesRemove first == x; ValueError if missing
clear()yesRemove all
index(x[, start[, stop]])noFirst index; ValueError if missing
count(x)noOccurrences of x
sort(*, key=None, reverse=False)yesIn-place; returns None
reverse()yesIn-place reverse
copy()noShallow copy (xs[:] / list(xs))

Builtins that operate on lists / sequences

BuiltinNotes
len(xs)Length
x in xs / x not in xsMembership — O(n)
min / max / sumOver elements; sum needs numbers
sorted(xs, *, key=…, reverse=…)New sorted list
reversed(xs)Reverse iterator
enumerate(xs, start=0)(i, x) pairs
zip(*seqs)Parallel tuples (stops at shortest)
all / anyTruth of all / any elements
map(fn, xs) / filter(fn, xs)Lazy; wrap with list(...)
slice assignment / del xs[i] / del xs[a:b]Delete or replace ranges

Lists are dynamic arrays; append/pop at the end is amortized O(1). Insert/delete at the front is O(n).

💡 Examples

Build and mutate:

nums: list[int] = [3, 1, 4]
nums.append(1)
nums.extend([5, 9])
nums.insert(0, 0)
last = nums.pop()          # 9
nums.remove(1)             # removes first 1
print(nums)                # [0, 3, 4, 1, 5]

Sort with key:

people = [{"name": "bob", "age": 30}, {"name": "ada", "age": 25}]
people.sort(key=lambda p: p["age"])
names = sorted(people, key=lambda p: p["name"])

Comprehension and unpacking:

squares = [n * n for n in range(6) if n % 2 == 0]
a, *mid, z = [10, 20, 30, 40]
# a=10, mid=[20, 30], z=40

Stack / queue patterns:

stack: list[str] = []
stack.append("a")
stack.pop()                # LIFO

from collections import deque
q: deque[str] = deque()
q.append("a")
q.popleft()                # FIFO — prefer deque over list.pop(0)

⚠️ Pitfalls

  • xs + ys creates a new list; xs.extend(ys) mutates in place.
  • xs *= n and [[] ] * n share references for mutable elements.
  • list.sort returns None — use sorted when you need a new list.
  • Shallow copy does not deep-copy nested lists — see copy / deepcopy.
  • Prefer deque for frequent left pops; lists are poor queues.

On this page