# Nested List Comprehension In Python (With Examples)

Sharing is caring!

Last Updated on July 24, 2022 by Jay

Sometimes we might need to use a nested list comprehension, which is equivalent to a nested loop in Python. This kind of list comprehension can be confusing sometimes, we’ll try to understand it with a few simple examples.

## A Simple List Comprehension

A list comprehension is a way of writing a loop in just one line of code in Python. It’s not only fancy but also very convenient to write loops in some cases.

### For Loop

Consider the following example where we use a for loop to print out each character in string “Python”:

``````var = "Python"
for i in var:
print(i)
P
y
t
h
o
n``````

### List Comprehension

The same for loop can be re-written as a list comprehension below. Note that a list comprehension returns a list.

``````[print(i) for i in var]
P
y
t
h
o
n
[None, None, None, None, None, None]``````

The below picture will help visualize how to construct a list comprehension. When in doubt, write the normal for loop first, then convert it into a list comprehension using the below three simple steps:

1. Create an empty list [].
2. Inside the empty list, write the action to repeat first. In our case, it’s the print(i).
3. Write the for … line following the action.

A list comprehension always follows this pattern: write the stuff inside the loop first, followed by the for … line.

Note from the above example that the list comprehension output has an extra line [None, None, None, None, None]. This is the returned list, which contains six print() statements. A print statement returns None, hence the six None values inside a list.

## A Nested List Comprehension In Python

A nested list comprehension is therefore equivalent to a nested loop. Let’s take a look at the below 2-layer nested list. To loop through it with for loop, we would do the following:

``````nums = [[1,2,3],[4,5,6],[7,8,9]]
for r in nums:
for i in r:
print(i)
1
2
3
4
5
6
7
8
9``````

Let’s recall how to create a list comprehension:

1. Write the stuff inside the loop
2. Followed by the for … line

Hence the 2-layer nested list comprehension becomes:

``````[print(i) for r in nums for i in r]
1
2
3
4
5
6
7
8
9
[None, None, None, None, None, None, None, None, None]``````

The below will help visualize the steps:

## 3-layer Nested List Comprehension

Let’s look at a more complicated example with a 3-layer nested list.

``````nums_2 = [[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]]
## Using for loop
for r in nums_2:
for i in r:
for j in i:
print(j)

1
2
3
4
5
6
7
8
9
10
11
12

## Using nested list comprehension
[print(j) for r in nums_2 for i in r for j in i]
1
2
3
4
5
6
7
8
9
10
11
12
[None, None, None, None, None, None, None, None, None, None, None, None]
``````

Again the below picture will help visualize how to construct the 3-layer nested list comprehension.