当前位置: 首页 > 后端技术 > Python

Python打破多重循环的两种方式

时间:2023-03-26 13:36:44 Python

1.跳出单循环无论是什么编程语言,都可能需要跳出循环。比如枚举的时候,找到一个满足条件的数,就终止。跳出单个循环非常简单,例如foriinrange(10):ifi>5:print(i)breakforiinrange(10):ifi>5:print(i)break但是,我们有时候会需要跳出多个循环,而break只能跳出一层循环,比如foriinrange(10):forjinrange(10):ifi+j>5:print(i,j)break这样的代码不是说找到一组i+j>5就停止,而是说找到连续10组,因为break只是跳出forjinrange的重复循环(10).那么,如何才能跳出倍数呢?在这里记下。2、跳出多重循环其实Python的标准语法是不支持跳出多重循环的,所以只能使用一些技巧。大致的思路是:写函数,用笛卡尔积,用调试。当然,最常用的思路是使用变量表示法deff():flag=0foriinrange(10):forjinrange(i):ifi+j>5:print(i,j)flag=1breakifflag==1:breakif__name__=="__main__":f()写成一个函数在Python中,函数运行到return语句就会停止,所以可以利用这个特性来写该函数作为终止多个循环的函数,例如defwork():foriinrange(10):forjinrange(10):ifi+j>5:return(i,j)print(work())利用笛卡尔积的思想也就是既然可以跳出单循环,我就把多个循环重写成单循环,可以用itertools中的笛卡尔积函数product,例如fromitertoolsimportproductfori,jinproduct(range(10),range(10)):ifi+j>5:print(i,j)break使用调试模式笛卡尔积的方法非常巧妙和简洁,但是它可以仅在每个循环的集合独立的情况下使用。层循环与上一层紧密相关,所以不能使用这种技术。这时候可以使用第一种方法,把它写成一个函数。此外,您还可以使用调试模式。这就利用了debug模式出错就退出的原理,伪装错误。classFound(Exception):passtry:foriinrange(10):forjinrange(i):#第二个循环与第一个循环相关ifi+j>5:raiseFoundexceptFound:print(i,j)

猜你喜欢