Home » Python List Comprehensions: A Complete Guide with Examples

What is List Comprehension in Python?

List comprehension is a concise and efficient way to create lists in Python. It replaces traditional for loops with a single-line expression, making code more readable and faster.

Why Use List Comprehension?

✅ More readable and compact than for loops
✅ Improves performance by reducing iterations
✅ Makes code more Pythonic

Basic Syntax of List Comprehension

new_list = [expression for item in iterable if condition]

Breakdown:

  • expression: The operation to apply on each item
  • item: The current element in the iteration
  • iterable: The list, range, or other iterable being processed
  • if condition: (Optional) Filters items based on a condition

Step-by-Step Guide for List Comprehension in Python with Examples

1. Creating a List with List Comprehension

✅ Example: Generate a list of squares

squares = [x**2 for x in range(1, 6)]
print(squares)  # Output: [1, 4, 9, 16, 25]

💡 Best Practice: Keep it simple. Avoid overly complex expressions inside the comprehension.


2. Filtering Elements with a Condition

✅ Example: Get even numbers from a list

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers)  # Output: [2, 4, 6]

💡 Best Practice: Use filtering conditions wisely to improve readability.


3. Using List Comprehension with Strings

✅ Example: Convert a list of words to uppercase

words = ["hello", "world", "python"]
uppercase_words = [word.upper() for word in words]
print(uppercase_words)  # Output: ['HELLO', 'WORLD', 'PYTHON']

💡 Best Practice: Use built-in string methods like .upper(), .lower(), etc., for text transformations.


4. Using if-else in List Comprehension

✅ Example: Replace negative numbers with 0

numbers = [-3, -1, 2, -5, 4]
modified_numbers = [0 if x < 0 else x for x in numbers]
print(modified_numbers)  # Output: [0, 0, 2, 0, 4]

💡 Best Practice: Keep the if-else expression simple for better readability.


5. Nested List Comprehension

✅ Example: Flatten a 2D list

matrix = [[1, 2], [3, 4], [5, 6]]
flattened = [num for row in matrix for num in row]
print(flattened)  # Output: [1, 2, 3, 4, 5, 6]

💡 Best Practice: Use nested comprehension only when necessary. Otherwise, consider using loops for clarity.


6. List Comprehension with Functions

✅ Example: Apply a function to each element

def square(x):
    return x ** 2

numbers = [1, 2, 3, 4]
squared_numbers = [square(x) for x in numbers]
print(squared_numbers)  # Output: [1, 4, 9, 16]

💡 Best Practice: If logic is complex, define a function separately instead of using inline expressions.

Performance Comparison: List Comprehension vs for Loop

✅ Example: Squaring numbers using for loop vs list comprehension

import time

# Using for loop
start = time.time()
squares_loop = []
for x in range(1, 1000000):
    squares_loop.append(x**2)
end = time.time()
print(f"Loop time: {end - start:.5f} seconds")

# Using list comprehension
start = time.time()
squares_comp = [x**2 for x in range(1, 1000000)]
end = time.time()
print(f"List comprehension time: {end - start:.5f} seconds")

💡 Best Practice: List comprehensions are generally faster and should be preferred for large data processing.

Best Practices for List Comprehension in Python

✔ Use list comprehension for simple and readable operations.
✔ Avoid deep nesting – use loops when logic is complex.
✔ Use if-else wisely for better readability.
✔ Apply functions within comprehension for reusable code.

Scroll to Top