Skip to main content

Iteration Superpowers with `itertools`

Standard Library

itertools Recipes

`itertools` provides composable building blocks for iterating over data without materializing huge lists.

Recipes

PatternSnippetUse case
itertools.chainchain(list_a, list_b)Concatenate iterables lazily
itertools.isliceislice(stream, 10)Grab first N items
itertools.cyclecycle(['red', 'blue'])Repeat pattern
itertools.groupbysee belowGroup sorted data
itertools.pairwise (3.10+)pairwise(points)Adjacent pairs
itertools.permutations/combinationscombinations(users, 2)Combinatorics
from itertools import groupby

orders.sort(key=lambda o: o.customer_id)
for cust_id, items in groupby(orders, key=lambda o: o.customer_id):
process(cust_id, list(items))

Patterns

  • Build sliding windows with deque + islice.
  • Combine with functools to memoize expensive iterators.
  • Offload CPU-heavy combinations to multiprocessing when datasets are large.

Next up in your learning path