python跳出多层循环的几种方法 您所在的位置:网站首页 python怎么退出循环语句 python跳出多层循环的几种方法

python跳出多层循环的几种方法

2024-06-21 10:39| 来源: 网络整理| 查看: 265

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 实验室设备网 版权所有