我试图找出如何打破嵌套for循环来实现以下目的:
def for_loop_flow():
for a in range(0, 2):
print "a = %s" % a
for b in range(3, 5):
print "b = %s" % b
if b == 4:
print "XXXXXXXXbreak"
break
print("big piece of logic here, when nested for loop breaks, I "
"don't wanna be here")
Run Code Online (Sandbox Code Playgroud)
现在,我只能想到使用一个标志:
def for_loop_flow():
for a in range(0, 2):
print "a = %s" % a
flag = True
for b in range(3, 5):
print "b = %s" % b
if b == 4:
print "XXXXXXXXbreak"
flag = False
break
if flag == True:
print("big piece of logic here, when nested for loop breaks, I "
"don't wanna be here")
Run Code Online (Sandbox Code Playgroud)
这样做有更好的方法吗?
任何for与一个环break和一个标志变量可以表示为一个for带有else子句.所以在你的情况下,你可以摆脱旗帜并使用:
for a in range(2):
print "a = {:d}".format(a)
for b in range(3, 5):
print "b = {:d}".format(b)
if b == 4:
print "BREAK!"
break
else:
print "Only run if no break in inner loop"
Run Code Online (Sandbox Code Playgroud)
请注意,这也适用于while:
while check_if_still_true():
do_work()
if shall_we_break():
break
else:
we_exited_because_check_returned_false()
Run Code Online (Sandbox Code Playgroud)