How to continue in nested loops in Python
Solution 1:
- Break from the inner loop (if there's nothing else after it)
- Put the outer loop's body in a function and return from the function
- Raise an exception and catch it at the outer level
- Set a flag, break from the inner loop and test it at an outer level.
- Refactor the code so you no longer have to do this.
I would go with 5 every time.
Solution 2:
Here's a bunch of hacky ways to do it:
-
Create a local function
for a in b: def doWork(): for c in d: for e in f: if somecondition: return # <continue the for a in b loop?> doWork()
A better option would be to move doWork somewhere else and pass its state as arguments.
-
Use an exception
class StopLookingForThings(Exception): pass for a in b: try: for c in d: for e in f: if somecondition: raise StopLookingForThings() except StopLookingForThings: pass
Solution 3:
from itertools import product
for a in b:
for c, e in product(d, f):
if somecondition:
break
Solution 4:
You use break
to break out of the inner loop and continue with the parent
for a in b:
for c in d:
if somecondition:
break # go back to parent loop
Solution 5:
use a boolean flag
problem = False
for a in b:
for c in d:
if problem:
continue
for e in f:
if somecondition:
problem = True