Zip, Enumerate, Map, Filter
Python · Reference cheat sheet
Zip, Enumerate, Map, Filter
Python · Reference cheat sheet
📋 Overview
enumerate, zip, map, and filter are built-in iteration helpers. Prefer enumerate/zip and comprehensions in idiomatic Python; map/filter shine with existing callables.
🔧 Core concepts
| Built-in | Role |
|---|---|
enumerate(it, start=0) | Index + value pairs |
zip(*its, strict=False) | Parallel iteration (3.10+ strict) |
map(fn, it, ...) | Apply fn lazily |
filter(pred, it) | Keep truthy pred |
reversed / sorted | Related helpers |
All return iterators (except sorted → list). Consume once unless recreated.
💡 Examples
enumerate and zip:
names = ["ada", "bob", "cy"]
scores = [9, 7, 8]
for i, name in enumerate(names, start=1):
print(i, name)
for name, score in zip(names, scores, strict=True):
print(f"{name}: {score}")unzip:
pairs = [("a", 1), ("b", 2)]
letters, nums = zip(*pairs)
print(letters, nums)map / filter vs comps:
nums = [1, 2, 3, 4]
print(list(map(str, nums)))
print(list(filter(lambda n: n % 2 == 0, nums)))
# Prefer:
print([str(n) for n in nums])
print([n for n in nums if n % 2 == 0])dict from parallel lists:
keys = ["host", "port"]
vals = ["localhost", "8000"]
cfg = dict(zip(keys, vals, strict=True))⚠️ Pitfalls
zipstops at the shortest iterable unlessstrict=True(then errors on mismatch).map/filterare lazy — wraplist()for reuse/debug.enumerateon a dict iterates keys — use.items()when you need pairs.- Star-unzip
zip(*xs)fails on emptyxs. - Heavy
lambdawith map/filter is usually clearer as a comprehension.