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

Pavol Kutaj
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)]

--

--

No responses yet