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

 更新时间:2019年10月04日 15:00:29   作者:爱喝马黛茶的安东尼  
在本文里小编给大家整理的是关于Python中断多重循环的思路以及相关知识点,有需要的朋友们可以学习下。

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代码实现为图片上版权

    不知道大家会不会遇到这样的情况,自己辛辛苦苦整理的攻略,分享给自己的一些朋友,结果分享有人堂而皇之地拿着这份攻略图片去引流,并声称是自己整理的,真是岂有此理!本文就来用Python实现为图片上版权,需要的可以参考一下
    2023-01-01
  • Python标准库pickle的简单使用

    Python标准库pickle的简单使用

    本文主要介绍了Python标准库pickle的简单使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Python基于checksum计算文件是否相同的方法

    Python基于checksum计算文件是否相同的方法

    这篇文章主要介绍了Python基于checksum计算文件是否相同的方法,涉及Python针对二进制文件的读取与判定技巧,需要的朋友可以参考下
    2015-07-07
  • 使用tensorflow将图片灰度化以及遇到的坑解决

    使用tensorflow将图片灰度化以及遇到的坑解决

    这篇文章主要介绍了使用tensorflow将图片灰度化以及遇到的坑解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Python PyQt5运行程序把输出信息展示到GUI图形界面上

    Python PyQt5运行程序把输出信息展示到GUI图形界面上

    这篇文章主要介绍了Python PyQt5运行程序把输出信息展示到GUI图形界面上,本文通过截图实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Python设计模式优雅构建代码全面教程示例

    Python设计模式优雅构建代码全面教程示例

    Python作为一门多范式的编程语言,提供了丰富的设计模式应用场景,在本文中,我们将详细介绍 Python 中的各种设计模式,包括创建型、结构型和行为型模式
    2023-11-11
  • Python解析json代码实例解析

    Python解析json代码实例解析

    这篇文章主要介绍了Python解析json代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • python使用 __init__初始化操作简单示例

    python使用 __init__初始化操作简单示例

    这篇文章主要介绍了python使用 __init__初始化操作,结合实例形式分析了Python面向对象程序设计中使用__init__进行初始化操作相关技巧与注意事项,需要的朋友可以参考下
    2019-09-09
  • python使用logging模块发送邮件代码示例

    python使用logging模块发送邮件代码示例

    这篇文章主要介绍了python使用logging模块发送邮件代码示例,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Python异步编程之yield from的用法详解

    Python异步编程之yield from的用法详解

    yield from 是Python3.3 后新加的语言结构,可用于简化yield表达式的使用,这篇文章主要为大家详细介绍了yield from的用法,需要的可以了解一下
    2023-12-12

最新评论