例外をスローするよりもネストされたループから抜け出す簡単な方法はありますか?(パール各ループにラベルを付けて、少なくとも外側のループを継続することができます。
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
ベストアンサー1
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