Python中断多重循环的几种方式详解
作者:xushukui 时间:2022-05-09 21:44:04
这篇文章主要介绍了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
来源:https://www.cnblogs.com/nyist-xsk/p/11350956.html
标签:Python,中断,多重,循环
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
通过屏蔽IP来防止采集
2007-08-19 15:28:00
IE6下图片下方有空隙的解决方法
2008-08-01 18:02:00
如何让IIS支持wap,让ASP生成wml
2008-05-18 13:42:00
CSS实例讲解:地图提示
2007-05-11 17:04:00
![](https://img.aspxhome.com/file/uploadpic/20075/20075111742681.jpg)
ASP连接11种数据库语法总结
2007-09-29 12:07:00
Python限制内存和CPU使用量的方法(Unix系统适用)
2023-08-02 08:41:44
python工具之清理 Markdown 中没有引用的图片
2022-02-14 11:44:39
![](https://img.aspxhome.com/file/2023/0/67300_0s.png)
IE7的web标准之道 Ⅱ
2008-08-13 12:50:00
![](https://img.aspxhome.com/file/UploadPic/20088/13/200881313213353s.gif)
Python入门教程4. 元组基本操作 <font color=red>原创</font>
2021-01-12 09:53:21
轻松掌握如何从命令行启动mysqld服务器
2008-12-31 15:47:00
PHP set_time_limit(0)长连接的实现分析
2023-11-06 11:46:20
Google中秋logo被恶搞
2007-09-25 15:55:00
[教程]用代码让你了解网页与键盘
2008-06-10 12:18:00
Oracle 中文字段进行排序的sql语句
2009-09-26 18:58:00
在SQL Server中编写通用数据访问方法
2009-01-20 11:35:00
《写给大家看的设计书》阅读笔记之对齐原则
2009-07-09 16:32:00
![](https://img.aspxhome.com/file/UploadPic/20097/9/dq-25s.jpg)
Web2.0视觉风格进化论 之二
2007-11-03 20:10:00
![](https://img.aspxhome.com/file/UploadPic/200711/3/2007113201853604s.jpg)
HTML 5 胜出:XHTML2 宣告夭折
2009-07-12 15:23:00
ASP实例:幻灯片新闻代码
2008-11-21 17:40:00
PHP用Session实现用户登陆功能
2023-06-18 02:09:38