突破嵌套循环

有没有比抛出异常更简单的方法来摆脱嵌套循环?(在Perl中,您可以给每个循环加上标签,至少可以继续一个外部循环。)


for x in range(10):

    for y in range(10):

        print x*y

        if x*y > 50:

            "break both loops"

即,是否有比以下更好的方法:


class BreakIt(Exception): pass


try:

    for x in range(10):

        for y in range(10):

            print x*y

            if x*y > 50:

                raise BreakIt

except BreakIt:

    pass



白衣染霜花
浏览 396回答 3
3回答

长风秋雁

for x in xrange(10):    for y in xrange(10):        print x*y        if x*y > 50:            break    else:        continue  # only executed if the inner loop did NOT break    break  # only executed if the inner loop DID break对于更深层的循环也是如此:for x in xrange(10):    for y in xrange(10):        for z in xrange(10):            print x,y,z            if x*y*z == 30:                break        else:            continue        break    else:        continue    break

慕桂英4014372

如果您能够将循环代码提取到函数中,则return可以随时使用一条语句退出最外面的循环。def foo():    for x in range(10):        for y in range(10):            print(x*y)            if x*y > 50:                returnfoo()如果很难提取该函数,则可以使用内部函数,如@ bjd2385所示,例如def your_outer_func():    ...    def inner_func():        for x in range(10):            for y in range(10):                print(x*y)                if x*y > 50:                    return    inner_func()    ...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python