打破嵌套循环
可能重复:
如何摆脱Python中的多个循环?
有没有比抛出异常更容易突破嵌套循环的方法? (在Perl中,您可以为每个循环提供标签,并至少继续一个外部循环。)
for x in range(10):
for y in range(10):
print x*y
if x*y > 50:
"break both loops"
也就是说,有比以下更好的方法:
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
至少有人建议,但也被拒绝。 我认为没有其他办法,不需要重复测试或重新组织代码。 有时候有点烦人。
在拒绝的信息中,范罗森先生提到使用return
,这是非常明智的,我需要记住个人。 :)
for x in xrange(10):
for y in xrange(10):
print x*y
if x*y > 50:
break
else:
continue # only executed if the inner loop did NOT break
break # only executed if the inner loop DID break
对于更深层次的循环也是一样:
for x in xrange(10):
for y in xrange(10):
for z in xrange(10):
print x,y,z
if x*y*z == 30:
break
else:
continue
break
else:
continue
break
如果您能够将循环代码提取到函数中,则可以随时使用return
语句退出最外层的循环。
def foo():
for x in range(10):
for y in range(10):
print x*y
if x*y > 50:
return
foo()
如果很难提取该函数,则可以使用内部函数,例如@ bjd2385所示
def your_outer_func():
...
def inner_func():
for x in range(10):
for y in range(10):
print x*y
if x*y > 50:
return
inner_func()
...
链接地址: http://www.djcxy.com/p/6183.html