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标准库之随机数 (math包、random包)介绍
Nov 25 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
python开发中module模块用法实例分析
Nov 12 Python
Python设计模式之外观模式实例详解
Jan 17 Python
Python实例方法、类方法、静态方法的区别与作用详解
Mar 25 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python matplotlib如何给图中的点加标签
Nov 14 Python
Django 批量插入数据的实现方法
Jan 12 Python
详解Java中一维、二维数组在内存中的结构
Feb 11 Python
Python基础之pandas数据合并
Apr 27 Python
Django程序的优化技巧
Apr 29 Python
学会用Python实现滑雪小游戏,再也不用去北海道啦
May 20 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
PHP下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &
2010/02/09 PHP
PHP 读取大文件的X行到Y行内容的实现代码
2013/06/24 PHP
PHP文件上传之多文件上传的实现思路
2016/01/27 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
2016/09/02 PHP
详解yii2实现分库分表的方案与思路
2017/02/03 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
Add Formatted Text to a Word Document
2007/06/15 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
getJSON调用后台json数据时函数被调用两次的原因猜想
2013/09/29 Javascript
学习JavaScript设计模式之单例模式
2016/01/19 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
2016/10/01 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
vue-router源码之history类的浅析
2019/05/21 Javascript
es6 for循环中let和var区别详解
2020/01/12 Javascript
Jquery如何使用animation动画效果改变背景色的代码
2020/07/20 jQuery
Javascript var变量删除原理及实现
2020/08/26 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python中创建二维数组
2018/10/17 Python
Python基于百度云文字识别API
2018/12/13 Python
对Python函数设计规范详解
2019/07/19 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
sealed修饰符是干什么的
2012/10/23 面试题
信息工程学院毕业生推荐信
2013/11/05 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
正规借条模板
2015/05/26 职场文书
为Java项目添加Redis缓存的方法
2021/05/18 Redis
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
Python Pandas常用函数方法总结
2021/06/15 Python
为什么MySQL分页用limit会越来越慢
2021/07/25 MySQL