List Comprehensions and Generators
As a Mid-level engineer, explain List Comprehensions and Generators. What problem does it solve and how would you describe it in an interview?
Answers use simple, clear English.
Quick interview answer
At Mid-level depth: start with the problem, then mechanism, then a short example. [f(x) for x in iterable if cond] builds lists concisely.
Detailed answer
At Mid-level depth: start with the problem, then mechanism, then a short example. [f(x) for x in iterable if cond] builds lists concisely. Generator expressions ( ... ) are lazy and memory-efficient. Dict/set comps follow same syntax. Core: [f(x) for x in iterable if cond] builds lists concisely. Generator expressions ( ... ) are lazy and memory-efficient. Dict/set comps follow same syntax. Real-time example: Parse log lines: active_errors = [ln for ln in lines if 'ERROR' in ln and ln.strip()]. Pros: Readable for simple transforms; often faster than manual append loops. Cons: Nested comps hurt readability; eager list comp on huge data wastes RAM. Common mistakes: Side effects inside comprehension; shadowing loop variable leaks in Py2 (not Py3). Best practices: Keep one logical clause; switch to generator for streaming pipelines. Audience level: Mid-level.
Full explanation
[f(x) for x in iterable if cond] builds lists concisely. Generator expressions ( ... ) are lazy and memory-efficient. Dict/set comps follow same syntax.
Real example & use case
Parse log lines: active_errors = [ln for ln in lines if 'ERROR' in ln and ln.strip()].
Pros & cons
Pros: Readable for simple transforms; often faster than manual append loops. Cons: Nested comps hurt readability; eager list comp on huge data wastes RAM.
Common mistakes
Side effects inside comprehension; shadowing loop variable leaks in Py2 (not Py3).
Best practices
Keep one logical clause; switch to generator for streaming pipelines.
Follow-up questions
- How would you test List Comprehensions and Generators?
- What metrics prove List Comprehensions and Generators is healthy in prod?
- How does List Comprehensions and Generators change at 10× traffic?