Learn Python List Comprehension In 2023 (With Examples)

Learn Python List Comprehension In 2023 (With Examples)

List Comprehension is a method or approach of creating a new list in Python based on any existing list. For example, if you have a list ‘List_A‘ with string values and you want to create a new list ‘List_B‘ based on the values present in ‘List_A‘ with a condition that elements or values of ‘List_B‘ contain the character ‘A‘ in it. In this article, we will learn Python list comprehension and its use using real-life examples.

Learn Python List Comprehension
Learn Python List Comprehension

Advantages of Using List Comprehension

  1. List comprehension requires a shorter syntax or fewer lines of codes
  2. It is more efficient that normal loops in terms of time and space
  3. It converts the iterative statement or syntax into a formula which is more readable and understandable

Basic Syntax of Python List Comprehension

new_list = [expression for item in iterable if condition == True]

For example, given a list ‘foo’ = [“A”, “BCD”, “FGH”, “AK”, “EA”], create a new list ‘bar’ using the given list that contains elements of ‘foo’ with character ‘A’ in it.

1 Approach- Using For Loop

In this approach, we will use a simple for loop to iterate through each element. And then check the condition using the if statement and store the results in a new empty list.

foo = ["A", "BCD", "FGH", "AK", "EA"]
bar = []
for x in foo:
    if "A" in x:
        bar.append(x)
print(bar)

Output
>> ['A', 'AK', 'EA']

2 Approach- Using List Comprehension

Now, we will see how we can write the above syntax

bar = [x for x in foo if "A" in x]
print(bar)

Output
>> ['A', 'AK', 'EA']

We can observe that the complete syntax has been reduced to a single line of code.

Compare Time Complexity of For Loop and List Comprehension

We will check the time taken to execute the Python for loop and Python list comprehension using a simple example.

Scenario: Create a list using a range provided by the user and store the square of each element in the list to a new list.

# Import required module - time to calculate the execution time
import time

# create function to implement for loop
def for_loop(n):
    result = []
    for x in range(n):
        result.append(x**2)
    return result

# create function to implement list comprehension
def list_comprehension(n):
    return [x**2 for x in range(n)]
# Calculate and display the time takens by for_loop(10**6): where n = 10**6
start = time.time()
for_loop(10**6)
end = time.time()
print('Time taken for_loop:',round(end-start,2))

Output
>> 0.33
# Calculate and display the time takens by list_comprehension(10**6): : where n = 10**6
start = time.time()
list_comprehension(10**6)
end = time.time()

print('Time taken for list_comprehension:',round(end-start,2))

Output
>> 0.25

“List comprehension” is faster than “for loop”.

Some More Examples to Learn Python List Comprehension

1. Display squares of odd numbers from 1 to 15

# print squares of odd numbers from 1 to 15
squares = [n**2 for n in range(1, 16) if n%2!=0]
print(squares)

Output
>> [1, 9, 25, 49, 81, 121, 169, 225]

2. Display squares of even numbers from 1 to 15

# print squares of odd numbers from 1 to 15
squares = [n**2 for n in range(1, 16) if n%2==0]
print(squares)

Output
>> [4, 16, 36, 64, 100, 144, 196]

3. Example of Nested List Comprehensions

Nested List Comprehension is the list comprehension within another list comprehension.

# create the given matrix using List Comprehension
[[0,1,2,3,4],
[0,1,2,3,4],
[0,1,2,3,4]]
matrix = [[j for j in range(5)] for i in range(3)]
print(matrix)

Output
>> [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

In the above example, the first list comprehension is used to print the columns and the second is for printing the rows.