为了账号安全,请及时绑定邮箱和手机立即绑定

突破嵌套循环

突破嵌套循环

白衣染霜花 2019-12-02 17:04:03
有没有比抛出异常更简单的方法来摆脱嵌套循环?(在Perl中,您可以给每个循环加上标签,至少可以继续一个外部循环。)for x in range(10):    for y in range(10):        print x*y        if x*y > 50:            "break both loops"即,是否有比以下更好的方法:class BreakIt(Exception): passtry:    for x in range(10):        for y in range(10):            print x*y            if x*y > 50:                raise BreakItexcept BreakIt:    pass
查看完整描述

3 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

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




查看完整回答
反对 回复 2019-12-03
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

如果您能够将循环代码提取到函数中,则return可以随时使用一条语句退出最外面的循环。


def foo():

    for x in range(10):

        for y in range(10):

            print(x*y)

            if x*y > 50:

                return

foo()

如果很难提取该函数,则可以使用内部函数,如@ 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()

    ...



查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 395 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信