python跳出多层循环的几种方法 | 您所在的位置:网站首页 › python怎么退出循环语句 › python跳出多层循环的几种方法 |
for a in range(10):
for b in range(20):
if something(a, b):
# Break the inner loop...
break
经常会碰到两层甚至多层循环的情况,很多时候需要跳出内层循环到最外面。但是break只能跳出一层循环。 虽然goto被广为诟病,但是不得不说这是跳出多层循环的一种法子。然而python自带的没有goto语句。。。碰到了N次之后总结了几种跳出多层循环的方法: 方法一:利用函数 def work(): #定义函数 for i in range(5): print("i=", i) for j in range(5): print("--j=", j) for k in range(5): if k==2: return i,j,k print (work())return是直接返回的,也算是一种变相跳出多层循环的法子,把多层循环封装成函数。 方法二:立flag break_flag=False for i in range(10): print("grandfather") for j in range(10): print("father") for k in range(10): print("son") if k==3: break_flag=True break #跳出孙子层循环,继续向下运行 if break_flag==True: break #满足条件,运行break跳出爸爸层循环,向下运行 if break_flag==True: break #满足条件,运行break跳出爷爷层循环,结束全部循环,向下运行 print("keep going...")不得不说这样代码太臃肿了,而且如果逻辑稍微复杂一些,可能会需要不只一个flag,反正个人是不喜欢这种法子。 PS:百度到的某些博客上说的利用while循环,本质上也是立flag,而且多层for改成多层while也是很考验逻辑的,个人不推荐。 方法三:for...else不知道是不是python独有的语法,for循环执行完毕,才执行else语句,若for循环中途被break,else语句不执行 所以可以利用这一点跳出多层循环: for i in range(10): for j in range(10): Something():#内层循环要执行的操作 break else: continue #如果内层for循环正常执行完毕,continue break关于for...else的用法,参考:https://www.cnblogs.com/dspace/p/6622799.html 方法四:goto模块你没看错,python真的有goto模块,大概是广为诟病的goto还是有那么点用的吧 from goto import with_goto@with_gotodef range(start, stop): for i in range(10): for j in range(10): something() if j == stop; goto .end; label .end 方法五:自定义异常 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老实说这种方法第一次看到我也被震惊到了。还有这种操作... 更多奇技淫巧,详见 https://spaces.ac.cn/archives/4159
|
CopyRight 2018-2019 实验室设备网 版权所有 |