Python Docs

Comprehensions (List, Dict, Set, Generator)

Comprehensions provide concise syntax for transforming and filtering iterables. They are often faster and cleaner than equivalent for loops.

List Comprehensions

squares = [x*x for x in range(6)]          # [0,1,4,9,16,25]
evens = [x for x in range(10) if x % 2 == 0]
pairs = [(i, j) for i in range(2) for j in range(3)]

Dict Comprehensions

names = ['alice','bob','charlie']
lengths = {name: len(name) for name in names}
swapped = {v: k for k, v in {'a':1, 'b':2}.items()}

Set Comprehensions

mods = {x % 3 for x in range(10)}   # {0,1,2}
unique_letters = {ch for ch in 'banana'}  # {'b','a','n'}

Generator Comprehensions

gen = (x*x for x in range(1_000_000))
first = next(gen)  # 1
# Lazy: does not create full list in memory

Conditional Logic

labels = ['even' if x % 2 == 0 else 'odd' for x in range(5)]
filtered = [x*x for x in range(10) if x % 3 == 0]

Nested Comprehensions

matrix = [[i*j for j in range(3)] for i in range(3)]
flattened = [x for row in matrix for x in row]

Best Practices

  • Keep comprehensions short; complex logic belongs in loops.
  • Use generator comprehensions for large sequences (memory-efficient).
  • Use parentheses or line breaks for readability.