Есть несколько способов вырваться из нескольких вложенных циклов
Это:
1) использовать break-continue
for x in xrange(10):
for y in xrange(10):
print x*y
if x*y > 50:
break
else:
continue # only executed if break was not used
break
2) использоватьвернуть
def foo():
for x in range(10):
for y in range(10):
print x*y
if x*y > 50:
return
foo()
3), чтобы использовать специальное исключение
class BreakIt(Exception): pass
try:
for x in range(10):
for y in range(10):
print x*y
if x*y > 50:
raise BreakIt
except BreakIt:
pass
У меня была мысль, что может быть какой-то другой способ сделать это.Именно с помощью исключения StopIteration отправляется непосредственно во внешний цикл.Я написал этот код
it = iter(range(10))
for i in it:
for j in range(10):
if i*j == 20:
raise StopIteration
К сожалению, StopIорт не был перехвачен циклом for, и этот код вызвал ужасную трассировку.Я думаю, это потому, что StopItered не был отправлен изнутри итератора it .(это мое предположение, я не уверен в этом).
Есть ли способ, которым я могу отправить StopIteration во внешний цикл?
Спасибо!