Как продолжить в вложенных циклах в Python
Как вы можете continue
родительский цикл сказать два вложенных цикла в Python?
for a in b:
for c in d:
for e in f:
if somecondition:
<continue the for a in b loop?>
Я знаю, что вы можете избежать этого в большинстве случаев, но это можно сделать в Python?
Ответы
Ответ 1
- Перерыв от внутреннего цикла (если после него ничего нет)
- Поместите тело внешнего цикла в функцию и вернитесь из функции
- Поднимите исключение и поймайте его на внешнем уровне
- Установите флаг, перейдите из внутреннего цикла и проверьте его на внешнем уровне.
- Восстановите код, чтобы вам больше не приходилось это делать.
Я бы пошел с 5 каждый раз.
Ответ 2
Вот куча хакерских способов сделать это:
-
Создайте локальную функцию
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()
Лучшим вариантом было бы перемещать doWork в другое место и передавать его состояние в качестве аргументов.
-
Используйте исключение
class StopLookingForThings(Exception): pass
for a in b:
try:
for c in d:
for e in f:
if somecondition:
raise StopLookingForThings()
except StopLookingForThings:
pass
Ответ 3
from itertools import product
for a in b:
for c, e in product(d, f):
if somecondition:
break
Ответ 4
Вы используете break
для выхода из внутреннего цикла и продолжения с родительским
for a in b:
for c in d:
if somecondition:
break // go back to parent loop