python - Python 中的命名循环

标签 python for-loop label break

我最近读了this question它有一个关于在 Java 中标记循环的解决方案。

我想知道 Python 中是否存在这样的循环命名系统。我曾多次遇到需要从内部 for 循环中跳出外部 for 循环的情况。通常,我通过将内部循环放在一个返回(以及其他)用作中断条件的 bool 值的函数中来解决这个问题。但是为中断标记循环似乎要简单得多,如果 python 中存在这样的功能,我想尝试一下

有人知道吗?

最佳答案

这是使用上下文管理器打破多个嵌套 block 的方法:

import contextlib

@contextlib.contextmanager
def escapable():
    class Escape(RuntimeError): pass
    class Unblock(object):
        def escape(self):
            raise Escape()

    try:
        yield Unblock()
    except Escape:
        pass

您可以使用它来跳出多个循环:

with escapable() as a:
    for i in xrange(30):
        for j in xrange(30):
            if i * j > 6:
                a.escape()

你甚至可以嵌套它们:

with escapable() as a:
    for i in xrange(30):
        with escapable() as b:
            for j in xrange(30):
                if i * j == 12:
                    b.escape()  # Break partway out
                if i * j == 40:
                    a.escape()  # Break all the way out

关于python - Python 中的命名循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8419796/

相关文章:

python telegram.ext commandhandler 不适用于命令列表

列表理解中的 Python if 语句

php - 在 PHP 的 for 循环中向日期添加 1 个月

PHP/MySQL 打印重复标签

three.js - 在 3D 对象上方附加文本

python - Django TastyPie : how do I return something other than 500 for UnsupportedFormat?

python - Django 百分比表单域

python - 如何分析 Django 中间件本身?

Python 嵌套循环问题

IOS:管理某些 UIView 中的元素