盘点Python中断多重循环的思路-Python教程

资源魔 23 0

I. 跳出单轮回

不论是甚么编程言语,都有可能会有跳出轮回的需要,比方枚举时,找到一个餍足前提的数就终止。跳出单轮回是很简略的,比方:

for i in range(10):
    if i > 5:
        print i
        break

但是,咱们有时分会需求跳出多重轮回,而break只可以跳出一层轮回,比方:

for i in range(10):
    for j in range(10):
        if i+j > 5:
            print i,j
            break

这样的代码并不是说找到一组 i+j > 5就中止,而是延续找到10组,由于break只跳出了for j in range(10)这一重轮回。那末,怎样能力跳出多重呢?正在此记载备忘一下。

相干保举:《Python教程》

II. 跳出多重轮回

现实上,Python的规范语法是没有支持跳出多重轮回的,以是只能行使一些技术,大略的思绪有:写成函数、行使笛卡尔积、行使调试。

当然最罕用的思绪是应用变量标志法

def f():
    flag = 0
    for i in range(10):
        for j in range(i):
            if i+j>5:
                print i,j
                flag = 1
                break
        if flag == 1:
            break
if __name__ == "__main__":
    f()

写成函数

正在Python中,函数运转到return这一句就会中止,因而能够行使这一特点,将性能写成函数,终止多重轮回。

例如:

def work():
    for i in range(10):
        for j in range(10):
            if i+j > 5:
                return i,j
print work()

行使笛卡尔积

这类办法的思绪就是,既然能够跳出单轮回,我就将多重轮回改写为单轮回,这能够行使itertools中的笛卡尔积函数product,例如:

from itertools import product
for i,j in product(range(10), range(10)):
    if i+j > 5:
        print i,j
        break

行使调试模式

笛卡尔积的形式很巧妙,也很简约,但它只能用于每一次轮回的荟萃都是自力的情景,如果每一层轮回都与前一层严密相干,就不克不及用这类技术了。这时候候能够用第一种办法,将它写成函数,另外,还能够行使调试模式。这个行使了调试模式中,只需呈现报错就加入的原理,它假装了一个谬误进去。

class Found(Exception):
    pass
try:
    for i in range(10):
        for j in range(i): #第二重轮回跟第一重无关
            if i + j > 5:
                raise Found
except Found:
    print i, j

以上就是清点Python中缀多重轮回的思绪的具体内容,更多请存眷资源魔其它相干文章!

标签: Python python教程 python编程 python使用问题 中断 多重循环

抱歉,评论功能暂时关闭!