Python 本身沒有“break n” 和“goto” 的語法,這也造成了Python 難以跳出多層(特定層數)循環。下面是幾個跳出多層(特定層數)循環的tip。
1、自定義異常
class getoutofloop(Exception): pass try: for i in range(5): for j in range(5): for k in range(5): if i == j == k == 3: raise getoutofloop() else: print i, '----', j, '----', k except getoutofloop: pass |
2、封裝為函數return
def test(): for i in range(5): for j in range(5): for k in range(5): if i == j == k == 3: return else: print i, '----', j, '----', k test() |
3、for ... else ... 用法
上面的兩種都是只能跳出多層而不能跳出特定層數的循環,接下來的這個正是為了跳出特定層數的循環。
for i in range(5): for j in range(5): for k in range(5): if i == j == k == 3: break else: print i, '----', j, '----', k else: continue break else: continue break |
else在 while和for 正常循環完成之后執行,和直接寫在 while和for 之后沒有區別,但是如果用break結束循環之后else就不會執行了。這也是個很新奇的做法。
才知道原來可以作為跳出多層循環用。不過要是有多次跳出不同層的循環的需求,也沒轍了。
