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

常见方法

II. 跳出多重循环

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

写成函数

在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
时间: 2024-10-05 06:16:55

Python中断多重循环的几种思路的相关文章

java跳出多重循环的两种方法

1在 Java 中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的 break 语句,即可跳出外层循环.例如,ok:for(int i=0;i<10;i++){for(int j=0;j<10;j++){System.out.println( " i= " + i + " ,j= " + j);if(j ==5) break ok;}}2让外层的循环条件表达式的结果可以受到里层循环体代码的控制,例如,要在二维

Python跳出多重循环的方法

http://blog.csdn.net/churximi/article/details/51043595 方法1:自定义异常 # -*- coding:utf-8 -*- """ 功能:python跳出循环 """ # 方法1:自定义异常 class Getoutofloop(Exception): pass try: for i in range(5): for j in range(5): if i == j == 2: raise Ge

Letter Combinations of a Phone Number [leetcode]谈谈循环解法的两种思路

本系列博文中有很多两种思路的,其实是因为第一遍刷题的时候有一个想法,第二遍刷题的时候已经忘掉之前的思路了,又有新的想法了. 同时大部分代码我也同时PO到leetcode的对应题目的问答中去了,所以如果你也查看问题讨论的话会发现有和我一模一样的代码,其实就是我PO的:) 书接正文,基于循环的两种思路如下: 第一种思路 比如"234"这个字符串,我可以先将0...1的所有排列找到-->{"a", "b", "c"} 再进一步

python中列表删除和多重循环退出

在学习python的时候,会有一些梗非常不适应,在此列举列表删除和多重循环退出的例子: 列表删除里面的坑 比如我们有一个列表里面有很多相同的值,假如:nums=[1,6,6,3,6,2,10,2,100],我想去掉6,可以这样写: nums=[1,6,6,3,6,2,10,2,100] for n in nums: if n==6: nums.remove(n) nums.sort() print(nums)#输出结果:[1, 2, 2, 3, 6, 10, 100] 排序显示后列表中还有一个6

慕课网-安卓工程师初养成-4-14 Java 循环语句之多重循环

来源:http://www.imooc.com/code/1497 循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: 例如:使用 * 打印长方形: 实现代码为: 执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容.此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出.接下来返回外层循环 i 变为 2 ,准备打

Java 循环语句之多重循环

循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: 例如:使用 * 打印长方形: 实现代码为: 执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容.此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出.接下来返回外层循环 i 变为 2 ,准备打印下一行,依此类推,直到完成长方形的打印

Java基础---Java循环语句之多重循环(二十七)

Java 循环语句之多重循环 循环体中包含循环语句的结构称为多重循环.三种循环语句可以自身嵌套,也可以相互嵌套,最常见的就是二重循环.在二重循环中,外层循环每执行一次,内层循环要执行一圈. 如下所示: 例如:使用 * 打印长方形: 实现代码为: 执行流程:当 i = 1 时,外层循环条件成立,进入内层循环,开始打印第一行内容.此时, j 从 1 开始,循环 8 次,内层循环结束后换行,实现第一行 8 个 * 的输出.接下来返回外层循环 i 变为 2 ,准备打印下一行,依此类推,直到完成长方形的打

Python Selenium 获取不到弹出框的另外一种思路

大家都知道弹出框大致可以分为三种:1.警告消息框(alert).2.确认消息框(confirm).3.提示消息对话(prompt) 而selenium 提供switch_to_alert()方法来定位: switch_to_alert() #定位弹出对话 text()               #获取对话框文本值 accept()                   #相当于点击"确认" dismiss()                  #相当于点击"取消"

python之条件-循环和其他语句

5.1.1 使用逗号输出 如何使用print来打印表达式----不管是字符串还是其他类型进行自动转换后的字符串. >>> print 'age:' , 42 age: 42 >>> >>> print 1,2,3 1 2 3 >>> 1,2,3 (1, 2, 3) >>> print (1,2,3) (1, 2, 3) >>> 如果想要同时输出文本和变量值,却不希望使用字符串格式化的话,那这个特性就