Подтвердить что ты не робот

Как продолжить в вложенных циклах в 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?

4b9b3361

Ответ 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