Python3 跳出多重循环 for...else...

Python循环跳出有break和continue,可是每次只能提早结束或停止当前层的循环。能否从内层循环跳出外层循环呢?函数

Python跳出多层循环的方法能够考虑如下几种方法:oop

1.封装函数,利用return.学习

2.自定义异常,跳出循环。spa

3.(本次随笔的重点)用for...else...语句.net

for a in xrange(10):
     for b in xrange(20):
          if something(a, b):
               # Break the inner loop...
              break
    else:
          # Continue if the inner loop wasn't broken.
         continue
   # Inner loop was broken, break the outer.
   breakblog

不仅是if有,while和for都有else分支。循环体的else分支触发条件是循环正常结束。若是循环内被break跳出,就不执行else。因此这个逻辑是:若是循环内break了,不触发else,则执行下一句外层循环中的break;若是正常结束,执行else分支里的continue,直接跳转到外层循环的下一轮,跳过了第二个break。io

【如下程序代码引自https://blog.csdn.net/churximi/article/details/51043595,仅供学习参考,若有不妥,请联系我删除。】循环

for i in range(5):
     for j in range(5):
          for k in range(5):
               if i == j == k == 3:
                   break
               else:
                     print(i, '----', j, '----', k)
         else: # else1
               continue
         break # break1
    else: # else2
            continue
    break # break2程序

【输出结果】方法

0 ---- 0 ---- 00 ---- 0 ---- 10 ---- 0 ---- 20 ---- 0 ---- 30 ---- 0 ---- 40 ---- 1 ---- 00 ---- 1 ---- 10 ---- 1 ---- 20 ---- 1 ---- 30 ---- 1 ---- 40 ---- 2 ---- 00 ---- 2 ---- 10 ---- 2 ---- 20 ---- 2 ---- 30 ---- 2 ---- 40 ---- 3 ---- 00 ---- 3 ---- 10 ---- 3 ---- 20 ---- 3 ---- 30 ---- 3 ---- 40 ---- 4 ---- 00 ---- 4 ---- 10 ---- 4 ---- 20 ---- 4 ---- 30 ---- 4 ---- 41 ---- 0 ---- 01 ---- 0 ---- 11 ---- 0 ---- 21 ---- 0 ---- 31 ---- 0 ---- 41 ---- 1 ---- 01 ---- 1 ---- 11 ---- 1 ---- 21 ---- 1 ---- 31 ---- 1 ---- 41 ---- 2 ---- 01 ---- 2 ---- 11 ---- 2 ---- 21 ---- 2 ---- 31 ---- 2 ---- 41 ---- 3 ---- 01 ---- 3 ---- 11 ---- 3 ---- 21 ---- 3 ---- 31 ---- 3 ---- 41 ---- 4 ---- 01 ---- 4 ---- 11 ---- 4 ---- 21 ---- 4 ---- 31 ---- 4 ---- 42 ---- 0 ---- 02 ---- 0 ---- 12 ---- 0 ---- 22 ---- 0 ---- 32 ---- 0 ---- 42 ---- 1 ---- 02 ---- 1 ---- 12 ---- 1 ---- 22 ---- 1 ---- 32 ---- 1 ---- 42 ---- 2 ---- 02 ---- 2 ---- 12 ---- 2 ---- 22 ---- 2 ---- 32 ---- 2 ---- 42 ---- 3 ---- 02 ---- 3 ---- 12 ---- 3 ---- 22 ---- 3 ---- 32 ---- 3 ---- 42 ---- 4 ---- 02 ---- 4 ---- 12 ---- 4 ---- 22 ---- 4 ---- 32 ---- 4 ---- 43 ---- 0 ---- 03 ---- 0 ---- 13 ---- 0 ---- 23 ---- 0 ---- 33 ---- 0 ---- 43 ---- 1 ---- 03 ---- 1 ---- 13 ---- 1 ---- 23 ---- 1 ---- 33 ---- 1 ---- 43 ---- 2 ---- 03 ---- 2 ---- 13 ---- 2 ---- 23 ---- 2 ---- 33 ---- 2 ---- 43 ---- 3 ---- 03 ---- 3 ---- 13 ---- 3 ---- 2

相关文章
相关标签/搜索