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

TypeSyntaxUse
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!