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使用问题 中断 多重循环
抱歉,评论功能暂时关闭!