Python中断多重循环的思路总结


Posted in Python onOctober 04, 2019

I. 跳出单循环

不管是什么编程语言,都有可能会有跳出循环的需求,比如枚举时,找到一个满足条件的数就终止。跳出单循环是很简单的,比如:

for i in range(10):

  if i > 5:

    print i

    break

然而,我们有时候会需要跳出多重循环,而break只能够跳出一层循环,比如:

for i in range(10):

  for j in range(10):

    if i+j > 5:

      print i,j

      break

这样的代码并非说找到一组 i+j > 5就停止,而是连续找到10组,因为break只跳出了for j in range(10)这一重循环。那么,怎么才能跳出多重呢?在此记录备忘一下。

II. 跳出多重循环

事实上,Python的标准语法是不支持跳出多重循环的,所以只能利用一些技巧,大概的思路有:写成函数、利用笛卡尔积、利用调试。

当然最常用的思路是使用变量标记法

def f():

  flag = 0

  for i in range(10):

    for j in range(i):

      if i+j>5:

        print i,j

        flag = 1

        break

    if flag == 1:

      break

if __name__ == "__main__":

  f()

写成函数

在Python中,函数运行到return这一句就会停止,因此可以利用这一特性,将功能写成函数,终止多重循环。

例如:

def work():

  for i in range(10):

    for j in range(10):

      if i+j > 5:

        return i,j

print work()

利用笛卡尔积

这种方法的思路就是,既然可以跳出单循环,我就将多重循环改写为单循环,这可以利用itertools中的笛卡尔积函数product,例如:

from itertools import product

for i,j in product(range(10), range(10)):

  if i+j > 5:

    print i,j

    break

利用调试模式

笛卡尔积的方式很巧妙,也很简洁,但它只能用于每次循环的集合都是独立的情形,假如每层循环都与前一层紧密相关,就不能用这种技巧了。这时候可以用第一种方法,将它写成函数,另外,还可以利用调试模式。这个利用了调试模式中,只要出现报错就退出的原理,它伪装了一个错误出来。

class Found(Exception):

  pass

try:

  for i in range(10):

    for j in range(i): #第二重循环跟第一重有关

      if i + j > 5:

        raise Found

except Found:

  print i, j

以上就是盘点Python中断多重循环的思路的详细内容,更多请关注三水点靠木其它相关文章!

Python 相关文章推荐
利用python获得时间的实例说明
Mar 25 Python
python字符串加密解密的三种方法分享(base64 win32com)
Jan 19 Python
python matplotlib中文显示参数设置解析
Dec 15 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
python训练数据时打乱训练数据与标签的两种方法小结
Nov 08 Python
Python实现的特征提取操作示例
Dec 03 Python
django 自定义过滤器的实现
Feb 26 Python
django celery redis使用具体实践
Apr 08 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
python基于TCP实现的文件下载器功能案例
Dec 10 Python
Python工程师必考的6个经典面试题
Jun 28 Python
Python使用Opencv打开笔记本电脑摄像头报错解问题及解决
Jun 21 Python
python将字母转化为数字实例方法
Oct 04 #Python
Python3.7 pyodbc完美配置访问access数据库
Oct 03 #Python
Django框架model模型对象验证实现方法分析
Oct 02 #Python
Python 线程池用法简单示例
Oct 02 #Python
python multiprocessing多进程变量共享与加锁的实现
Oct 02 #Python
Python shutil模块用法实例分析
Oct 02 #Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 #Python
You might like
Zerg剧情介绍
2020/03/14 星际争霸
通过PHP CLI实现简单的数据库实时监控调度
2009/07/01 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
2014/06/09 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
php阿拉伯数字转中文人民币大写
2015/12/21 PHP
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
jQuery往textarea中光标所在位置插入文本的方法
2015/06/26 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
看看“疫苗查询”小程序有温度的代码
2018/07/31 Javascript
Vue3新特性之在Composition API中使用CSS Modules
2020/07/13 Javascript
详解vue中v-on事件监听指令的基本用法
2020/07/22 Javascript
vue项目实现设置根据路由高亮对应的菜单项操作
2020/08/06 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
jquery实现简易验证插件封装
2020/09/13 jQuery
vue实现可移动的悬浮按钮
2021/03/04 Vue.js
Python+微信接口实现运维报警
2016/08/27 Python
python字符串的方法与操作大全
2018/01/30 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
基于python检查SSL证书到期情况代码实例
2020/04/04 Python
详解Python高阶函数
2020/08/15 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
大学生毕业自我鉴定范文
2013/09/19 职场文书
结构工程个人自荐信范文
2013/11/30 职场文书
医学专业本科毕业生自我鉴定
2013/12/28 职场文书
汽车销售经理岗位职责
2014/06/09 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
机器人瓦力观后感
2015/06/12 职场文书
《去年的树》教学反思
2016/02/18 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
Java设计模式中的命令模式
2022/04/28 Java/Android
腾讯云服务器部署前后分离项目之前端部署
2022/06/28 Servers