Yes — Python list comprehensions can be much more complex than just:
[expression for item in iterable][expression for item in iterable if condition]
There are 5 major advanced/complex patterns you should know.
✅ 1. Multiple for Loops (Nested Loops)
List comprehension can replace nested loops.
Syntax
[expression for x in iterable1 for y in iterable2]
Example
pairs = [(x, y) for x in range(3) for y in range(3)]
Equivalent to:
pairs = []
for x in range(3):
for y in range(3):
pairs.append((x, y))
✅ 2. Multiple if Conditions (Filter Chain)
Syntax
[expression for item in iterable if cond1 if cond2]
Example
nums = [n for n in range(50) if n % 2 == 0 if n % 5 == 0]
Equivalent to:
nums = []
for n in range(50):
if n % 2 == 0 and n % 5 == 0:
nums.append(n)
✅ 3. Conditional Expression (Inline if-else)
This is different from if condition filter.
Syntax
[expression_if_true if condition else expression_if_false for item in iterable]
Example
labels = ["even" if x % 2 == 0 else "odd" for x in range(10)]
Equivalent to:
labels = []
for x in range(10):
if x % 2 == 0:
labels.append("even")
else:
labels.append("odd")
✅ 4. Using Functions / Method Calls Inside Comprehension
Example
def square(x): return x * x
squares = [square(x) for x in range(10)]
Or with method calls:
cleaned = [s.strip().lower() for s in names]
✅ 5. Flattening Nested Lists (List Flattening)
Example
matrix = [[1,2,3],[4,5,6]]
flat = [num for row in matrix for num in row]
Equivalent to:
flat = []
for row in matrix:
for num in row:
flat.append(num)
🎯 Bonus: Dictionary & Set Comprehensions
Dictionary
{k: v*2 for k, v in data.items() if v > 10}
Set
{x*x for x in range(10)}
🎁 All Advanced Comprehension Patterns Summary
| Type | Syntax | Use |
|---|---|---|
| Basic | [expr for x in items] | Simple transformation |
| With Filter | [expr for x in items if cond] | Filtering |
| Inline If-Else | [expr1 if cond else expr2 for x in items] | Conditional logic |
| Nested Loops | [expr for x in a for y in b] | Cartesian, flattening |
| Multiple Filters | [expr for x in items if cond1 if cond2] | Chain filters |
| Use functions | [fn(x) for x in items] | Cleaner transformations |
| Dict Comprehension | {k:v for k,v in dict.items()} | Transform dict |
| Set Comprehension | {expr for x in items} | Unique values |
If you want, I can also give:
✔ 10 real industry examples
✔ Trick questions asked in Python interviews
✔ Nested comprehension diagrams (visual map)
Just tell me!