Python 跳出多层循环

Python 本身没有 break ngoto 的语法,这也造成了 Python 难以跳出多层(特定层数)循环。下面是几个跳出多层(特定层数)循环的 tip。

自定义异常

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

封装为函数 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()

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