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 跳出多重循环的更多相关文章

  1. python跳出多重循环

    # -*- coding=utf-8 -*- """ 如何结束多重循环,在单层循环中,可以用break跳出循环,那两层,三层呢? """ # ...

  2. python跳出多重循环的方法

    方法1:自定义异常 # -*- coding:utf-8 -*- """ 功能:python跳出循环 """ # 方法1:自定义异常 cla ...

  3. Python 如何跳出多重循环

    Python 如何跳出多重循环 抛异常 return

  4. python退出多重循环

    假设一段python程序有多重循环,我们都知道在一个循环当中,用break是退出当前的循环,然后继续下一次循环,但是如何才能跳出多重循环呢,实际就是结束所有的循环. 思路1::可以定义一个异常类,在需 ...

  5. Python中断多重循环的几种思路exit_flag

    常见方法 II. 跳出多重循环 事实上,Python的标准语法是不支持跳出多重循环的,所以只能利用一些技巧,大概的思路有:写成函数.利用笛卡尔积.利用调试. 写成函数 在Python中,函数运行到re ...

  6. Python中断多重循环的几种思路

    I. 跳出单循环 不管是什么编程语言,都有可能会有跳出循环的需求,比如枚举时,找到一个满足条件的数就终止.跳出单循环是很简单的,比如 for i in range(10): if i > 5: ...

  7. Java之跳出多重循环

    在java里,想要跳出多重循环,有两种方法 1.在循环语句前设置一个标记,然后使用带有该标记的break语句跳出该循环 public static void main(String args[]) { ...

  8. 关于Java 中跳出多重循环

    前言 环境:window10 JDK 1.8 应用场景:在多个for循环或while循环中,直接跳到最外层的循环外面,而不是需要层层退出来. 使用: 使用一个标签label(也可以是其他单词,不能是关 ...

  9. JS 跳出多重循环

    今天学到了如何跳出多重循环

随机推荐

  1. Python学习笔记——基础篇【第七周】———FTP作业(面向对象编程进阶 & Socket编程基础)

    FTP作业 本节内容: 面向对象高级语法部分 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 面向对象高级语法部分 参考:http://www.cnblogs.com/wupeiqi/ ...

  2. [转]Delphi中QuotedStr介绍及使用

    转自:http://www.360doc.com/content/13/0524/09/7873422_287679198.shtml 使用S:string; qry2.SQL.add('select ...

  3. C# 语言规范_版本5.0 (第14章 枚举)

    1. 枚举 枚举类型 (enum type) 是一种独特的值类型(第 4.1 节),它用于声明一组命名的常量. 下面的示例 enum Color { Red, Green, Blue } 声明一个名为 ...

  4. CodeForces 546D

    Description 两个士兵在玩一个游戏,开始的时候第一个士兵选择一个数n,并把这个数交给第二个士兵,第二个士兵必须选择一个x满足x>1 且n能被x整除,然后将n变为n/x,然后把这个数交给 ...

  5. AngularJS 初学笔记(理论基础)

    AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库. AngularJS 通过 ng-directives 扩展了 HTML. ng-app 指令定义一 ...

  6. Chorme 快捷键

    掌握谷歌浏览器的快捷键,能提升一定的使用效率. Windows 和 Linux 标签页和窗口快捷键 操作 快捷键 打开新窗口 Ctrl + n 在隐身模式下打开新窗口 Ctrl + Shift + n ...

  7. Hive 行列转换

    一.列转行 (对某列拆分,一列拆多行) 使用函数:lateral view explode(split(column, ',')) num eg: 如表:t_row_to_column_tmp 数据如 ...

  8. 利用commons-io.jar包中FileUtils和IOUtils工具类操作流及文件

    1.String IOUtils.toString(InputStream input),传入输入流对象,返回字符串,有多重重载,可按需要传参 用例: @Test public void showIn ...

  9. ubuntu 16.04下搭建web服务器(MySQL+PHP+Apache) 教程

    1.开始说明 下面很多可能参照网上其中以为前辈的,但有所改进吧.这些设置可能会有所不同,你需要根据不同情况进行修改. 安装apache2 2.切换管理员身份 在ubuntu中需要用root身份进行操作 ...

  10. Zookeeper实现分布式锁服务(Chubby)

    在分布式系统中,如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰,来保证一致性,在这种情况下,便需要使用到分布式锁例如有N台服务器同时 ...