# How to Use Multiple For Loops and Multiple If Statements in Python Comprehensions

• 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)]`
• This is synonymous to the
`l = []for x in range(5):    for y in range(5):        l.append((x,y))`

## 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]`
`values = []for x in range(100):    if x > 50:        for y in range(100):            if x - y != 0:                values.append(x / (x - y))`
• 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)]`
`[(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)]`

--

-- ## Pavol Kutaj

Infrastructure Support Engineer/Technical Writer (Snowplow Analytics) with a passion for Python/writing documentation. More about me: https://pavol.kutaj.com