🧪 Python List Comprehension – Compact, Pythonic, and Powerful
🧲 Introduction – What Is List Comprehension?
List comprehension is a concise and readable way to create new lists from existing iterables (like ranges, lists, or strings). It replaces verbose for
loop constructions with one-liner expressions that are often more efficient and Pythonic.
List comprehensions are ideal for mapping, filtering, and transforming data—core tasks in Python development, data science, and web apps.
🎯 In this guide, you’ll learn:
- The syntax and structure of list comprehensions
- How to use conditions in comprehensions
- Nested comprehensions for 2D data
- Best practices and performance tips
📐 Basic List Comprehension Syntax
new_list = [expression for item in iterable]
✅ Explanation:
expression
is the value to include in the list.item
is a variable representing each element fromiterable
.
🔁 Example 1: Square Numbers
squares = [x**2 for x in range(5)]
print(squares)
✅ Explanation:
- Iterates over
x
from0
to4
. - Computes
x**2
(square) for each value. - Output:
[0, 1, 4, 9, 16]
🔍 Example 2: Filter Even Numbers
evens = [x for x in range(10) if x % 2 == 0]
print(evens)
✅ Explanation:
- Loops through numbers from
0
to9
. - Includes only numbers divisible by 2 (
x % 2 == 0
). - Output:
[0, 2, 4, 6, 8]
🔄 Example 3: Convert to Uppercase
words = ["apple", "banana", "cherry"]
upper_words = [word.upper() for word in words]
print(upper_words)
✅ Explanation:
- Iterates over
word
inwords
. - Converts each word to uppercase using
.upper()
. - Output:
['APPLE', 'BANANA', 'CHERRY']
🔁 Example 4: Nested List Comprehension (2D Lists)
matrix = [[1, 2], [3, 4], [5, 6]]
flattened = [num for row in matrix for num in row]
print(flattened)
✅ Explanation:
- Loops through each
row
inmatrix
, then eachnum
in thatrow
. - Collects all numbers into a single flat list.
- Output:
[1, 2, 3, 4, 5, 6]
🧪 Example 5: Conditional Expression (if–else)
labels = ["even" if x % 2 == 0 else "odd" for x in range(5)]
print(labels)
✅ Explanation:
- Uses inline
if–else
to assign"even"
or"odd"
to each value. - Output:
['even', 'odd', 'even', 'odd', 'even']
⚠️ When Not to Use List Comprehensions
Avoid list comprehensions when:
- The logic is too complex (e.g., nested conditions or multiple function calls).
- You’re performing operations that don’t return values (like logging or file writing).
- The code becomes unreadable—clarity is more important than brevity.
💡 Best Practices
- ✅ Keep it readable: use simple expressions and conditions.
- ✅ Avoid deeply nested comprehensions—prefer regular loops for clarity.
- ✅ Use list comprehensions for filtering, transformation, and mapping.
- ✅ Pair with functions like
.upper()
,.strip()
, or math operations for transformations.
📌 Summary – Recap & Next Steps
List comprehensions are elegant and efficient tools for transforming and filtering data. They help you replace loops with compact, readable code, making your Python scripts cleaner and faster.
🔍 Key Takeaways:
- ✅ Basic syntax:
[expression for item in iterable]
- ✅ Add filtering with
if
and mapping with functions likeupper()
- ✅ Use inline
if–else
for condition-based expressions - ✅ Nest comprehensions carefully for multi-dimensional lists
⚙️ Real-World Relevance:
Used in data pipelines, API response parsing, matrix transformations, and text processing, list comprehensions make Python code cleaner and more expressive.
❓ FAQ Section – Python List Comprehension
❓ What is a list comprehension in Python?
✅ It’s a compact way to create lists using a for
loop inside square brackets:
[x**2 for x in range(5)]
❓ Can I use an if
statement in list comprehensions?
✅ Yes. You can filter items using if
:
[x for x in range(10) if x % 2 == 0]
❓ How do I use if–else
in a list comprehension?
✅ Place the condition before the for
:
["even" if x % 2 == 0 else "odd" for x in range(5)]
❓ Are list comprehensions faster than loops?
✅ Usually yes. They are optimized and run faster than equivalent for
loops in most cases.
❓ Can I use nested loops in list comprehensions?
✅ Yes. Example for flattening 2D lists:
[num for row in matrix for num in row]
Share Now :