How to Use Multiple For Loops and Multiple If Statements in Python Comprehensions
2 min readJun 15, 2022
The aim of this pagešis to demonstrate how multi-input comprehensions are largely the equivalents of nested for loops.
- comprehensions are shorthand syntax for creating collection
- this is just to stress that all of the comprehensions allow using
- multiple input sequences
- multiple if-clauses
1. MULTIPLE FOR-LOOPS
- The following provides a cartesian product of two ranges where the later for clauses are nested inside the earlier for clauses
[(x,y) for x in range(5) for y in range(5)]
- The result expression (e.g.
(x,y)
of the comprehension is executed inside the innermost/last for loop (e.g.for y in range(5)
below) - This is synonymous to the
l = []
for x in range(5):
for y in range(5):
l.append((x,y))
- ā¦but there is no need to initiate a variable and repeatedly append an element to it
2. MULTIPLE IF STATEMENTS
- the following calculates a simple statement involving
- 2 variables
- 2 if statements
values = [x / (x - y)
for x in range(100)
if x < 50
for y in range(100)
if x - y != 0]
- The longhand version
values = []
for x in range(100):
if x > 50:
for y in range(100):
if x - y != 0:
values.append(x / (x - y))
- The example illustrates a property where
- later clauses (e.g
range(x)
below ) can refer to variables bound in earlier clauses (e.g.for x
below) - it may seem confusing in a comprehension form, but completely natural if you think of it as nested for loops
[(x,y) for x in range(10) for y in range(x)]
- Which returns
[(1, 0), (2, 0), (2, 1), (3, 0), (3, 1), (3, 2), (4, 0), (4, 1), (4, 2), (4, 3), (5, 0), (5, 1), (5, 2), (5, 3), (5, 4), (6, 0), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (7, 0), (7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 6), (8, 0), (8, 1), (8, 2), (8, 3), (8, 4), (8, 5), (8, 6), (8, 7), (9, 0), (9, 1), (9, 2), (9, 3), (9, 4), (9, 5), (9, 6), (9, 7), (9, 8)]