python中退出多层循环的方法


Posted in Python onNovember 27, 2018

1、定义标记变量;利用变量值的变化退出循环

# 第一种嵌套形式
a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]]
# init_i = 0
# init_j = 0
flag = True
for i in range(3):
  for j in range(3):
    # print(i, j)
    if a[i][j] == 5:
      flag = False
      init_i = i
      init_j = j
      break
  if not flag:
    break
print(init_i, init_j)
print(i, j)

# 第二种嵌套形式
flag = True
while flag:
  for i in range(10):
    print(x)
    flag = False
    break

 2、使用函数配合return关键字 实现跳出循环(在函数内部只要执行完return语句 则直接退出函数)

def test():
  while True:
    for x in range(10):
      print(x)
      return
test()

 3、利用else continue 和外层的break跳出循环

a = [[1, 2, 3], [5, 5, 6], [7, 8, 9]]
init_i = 0
init_j = 0
flag = True
for i in range(3):
  for j in range(3):
    # print(i, j)
    if a[i][j] == 5:
      flag = False
      init_i = i
      init_j = j
      break
  else:
    continue
  break
  # if not flag:
  #   break
print(init_i, init_j)
print(i, j)

while True:
  for x in range(4):
    print(x)
    if x == 2:
      break
  else:
    print("未执行")
    continue
  break

python跳出多层循环的方法

今天同事问我一个python面试题,关于python跳出多层循环,原来还真没用过,网上一查还真有点意思,下面记录一下:

Python 本身没有“break n” 和“goto” 的语法,这也造成了Python 难以跳出多层(特定层数)循环。下面是几个跳出多层(特定层数)循环的tip。

1、自定义异常

class getoutofloop(Exception): pass
try:
  for i in range(5):
    for j in range(5):
      for k in range(5):
        if i == j == k == 3:
          raise getoutofloop()
        else:
          print i, '----', j, '----', k
except getoutofloop:
  pass

2、封装为函数return

def test():
  for i in range(5):
    for j in range(5):
      for k in range(5):
        if i == j == k == 3:
          return
        else:
          print i, '----', j, '----', k
test()

3、for ... else ... 用法

上面的两种都是只能跳出多层而不能跳出特定层数的循环,接下来的这个正是为了跳出特定层数的循环。

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: continue
    break
  else: continue
  break

else在 while和for 正常循环完成之后执行,和直接写在 while和for 之后没有区别,但是如果用break结束循环之后else就不会执行了。这也是个很新奇的做法。

才知道原来可以作为跳出多层循环用。不过要是有多次跳出不同层的循环的需求,也没辙了。

总结

以上所述是小编给大家介绍的python中退出多层循环的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Python 相关文章推荐
Python面向对象类继承和组合实例分析
May 28 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
对python过滤器和lambda函数的用法详解
Jan 21 Python
Python3.7 新特性之dataclass装饰器
May 27 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 Python
Python pandas库中的isnull()详解
Dec 26 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
详细分析Python垃圾回收机制
Jul 01 Python
Python字符串查找基本操作代码案例
Oct 27 Python
Python的轻量级ORM框架peewee使用教程
Feb 05 Python
Python入门之基础语法详解
May 11 Python
为什么Python中没有"a++"这种写法
Nov 27 #Python
django session完成状态保持的方法
Nov 27 #Python
Python3实现腾讯云OCR识别
Nov 27 #Python
python利用百度AI实现文字识别功能
Nov 27 #Python
python如何实现一个刷网页小程序
Nov 27 #Python
python实现简单的文字识别
Nov 27 #Python
python中类的属性和方法介绍
Nov 27 #Python
You might like
ASP和PHP都是可以删除自身的
2007/04/09 PHP
理解php原理的opcodes(操作码)
2010/10/26 PHP
网站用php实现paypal整合方法
2010/11/28 PHP
PHP面向对象自动加载机制原理与用法分析
2016/10/14 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
thinkphp分页集成实例
2017/07/24 PHP
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
JavaScript改变CSS样式的方法汇总
2015/05/07 Javascript
跟我学习javascript的var预解析与函数声明提升
2015/11/16 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
jQuery事件对象的属性和方法详解
2017/09/09 jQuery
浅谈在react中如何实现扫码枪输入
2018/07/04 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
elementUI 动态生成几行几列的方法示例
2019/07/11 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
Django 前后台的数据传递的方法
2017/08/08 Python
pandas多级分组实现排序的方法
2018/04/20 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
pytorch 加载(.pth)格式的模型实例
2019/08/20 Python
详解Python 实现 ZeroMQ 的三种基本工作模式
2020/03/24 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
营业员演讲稿
2013/12/30 职场文书
读书活动总结
2014/04/28 职场文书
亲子阅读的活动方案
2014/08/15 职场文书
施工安全汇报材料
2014/08/17 职场文书
高中军训的心得体会
2014/09/01 职场文书
大学生毕业个人总结
2015/02/15 职场文书
JavaScript中关于预编译、作用域链和闭包的理解
2021/03/31 Javascript
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
基于Redis延迟队列的实现代码
2021/05/13 Redis
python cv2图像质量压缩的算法示例
2021/06/04 Python
Python中itertools库的四个函数介绍
2022/04/06 Python
Redis特殊数据类型bitmap位图
2022/06/01 Redis