Python break 多重循环的一种方法

首先看看在 Java 中如何跳出多重循环:

outter:
for (int i = 1; i <= 5; ++i) {
    for (int j = 1; j <= 5; ++j) {
        if (j > 3) { // 结束子循环
            break;
        }
        if (i * j == 6) { // 跳出父循环
            break outter;
        }
        System.out.println(String.format("(%1$d, %2$d)", i, j));
    }
}

而在 Python 中没有类似的语法可以跳出多重循环,因此需要考自己实现。

常用之一:

class BreakAll(Exception):
    pass

try:
    for i in range(1, 6):
        for j in range(1, 6):
            if j > 3:  # 结束子循环
                break
            if i * j == 6:  # 跳出父循环
                raise BreakAll
            print('(%d, %d)' % (i, j))
except BreakAll:
    pass

或许在这种场景下以下代码更合适:

for i in range(1, 6):
    break_all = False
    for j in range(1, 6):
        if j > 3:  # 结束子循环
            break;
        if i * j == 6:  # 跳出父循环
            break_all = True
            break
        print('(%d, %d)' % (i, j))
    if break_all:
        break

你可能感兴趣的:(Python break 多重循环的一种方法)