如何在Python中打破嵌套for循环?

时间:2014-09-09 10:15:57

标签: python loops for-loop break

我想知道如何从这样的循环出来:

for a in range(95):
    for b in range(95):
        for c in range(95):
            for d in range(95):
                ...
                do some computings
                ...
                if condition:
                    task completed

任务完成后,继续所有循环和计算。它们必须被打破,但我不知道 - “任务完成”之后的单个break语句将仅在for循环中结束,但它将再次被调用多次 - 所以我们什么也得不到。

在C中,我会做一个= b = c = d = 95,但在python中不起作用。当然我可以使用while循环,但后来我必须使用X + = 1语句,它看起来很糟糕。

任何帮助?


关于循环: 我用它来使用暴力破解4-char密码。这不是一个真正的目的 - 仅用于测试。

2 个答案:

答案 0 :(得分:12)

使用itertools产品:

from itertools import product
for a, b, c, d in product(range(95), range(95), range(95), range(95)):
    print a, b, c, d
    if a == 1: break

更短的版本,谢谢Ashwini:

for a, b, c, d in product(range(95), repeat=4):
    print a, b, c, d
    if a == 1: break

答案 1 :(得分:4)

您可以使用异常来打破嵌套循环:

class Break(Exception): pass

try:
    for a in range(95):
        for b in range(95):
            for c in range(95):
                for d in range(95):
                    # ...
                    # do some computings
                    # ...
                    if condition:
                        # task completed
                        raise Break()
except Break:
    # do some stuff

StopIteration

try:
    for a in range(95):
        for b in range(95):
            for c in range(95):
                for d in range(95):
                    # ...
                    # do some computings
                    # ...
                    if condition:
                        # task completed
                        raise StopIteration()
except StopIteration:
    # do some stuff