python中退出多层循环的方法
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爬虫docker镜像添加nodejs环境实现方法
这篇文章主要为大家介绍了为python爬虫docker镜像添加nodejs环境实现方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-09-09Python多线程中阻塞(join)与锁(Lock)使用误区解析
这篇文章主要为大家详细介绍了Python多线程中阻塞join与锁Lock的使用误区,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-04-04python的pandas工具包,保存.csv文件时不要表头的实例
今天小编小编就为大家分享一篇python的pandas工具包,保存.csv文件时不要表头的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-06-06Python编程使用*解包和itertools.product()求笛卡尔积的方法
这篇文章主要介绍了Python编程使用*解包和itertools.product()求笛卡尔积的方法,涉及Python列表转换及itertools.product()求笛卡尔积相关操作技巧,需要的朋友可以参考下2017-12-12
最新评论