例如下面的例子,我们想要跳出这个嵌套循环:
关键词 break 只能跳出这个循环中的内循环。那有没有什么方法一次性跳出所有循环? Python 里有没有哪个内置的关键词可以实现呢?
不幸的的是,没有。

有句老话讲的好,"没有比拟就没有侵害", Python 做不到,其它的措辞却可以,比如万人鄙视的 PHP:
在 PHP 里 break 关键词后面随着一个数组,表示要跳出循环的次数,默认值是1,表示跳出一次循环。
这是一个很简洁命令的办理方案,这里必须夸一句 PHP,这里它表现的不错。
不过 Python 毕竟是很灵巧的措辞,我们有很多方法可以办理上面的问题,下面我就先容 5 中跳出嵌套循环的方法。
1. 利用"旗帜"变量这是个有效的办理方案,我们定义一个变量,作为一个"旗帜",例如:
如上面的代码,break_out_flag 作为一个"旗手"见告这个程序该跳出这个外循环了。
这个代码在实行上没什么问题,不过这显得我们的代码有点乱,由于我们引用了新的变量去办理这个问题,这个新变量并非非要引入的。
2. 引发非常如果 break 关键词不能达到我们的期望,那么是否可以引入其他的操作呢,比如 Python 的非常处理技能,我们可以利用它跳出嵌套循环:
就如上面代码所示,我们把非常"exception"当做关键词 break 利用,这样就可以一次跳出所有循环。
3. 利用相同的条件语句由于一个条件语句可以中断一次循环,那么利用相同的条件语句同样也可以再一次中断一个循环,例如:
上面的代码可行,但并不是一个好的办理方案,至少在效率上很差,由于重复实行一个条件语句会摧残浪费蹂躏很多韶光。
4. 利用 For-Else 语句Python 里有一个很分外的语句:"for-else"。 它并不盛行以至于很少有人知道它,由于习气上 else 是搭配 if 来利用。
不过对付这个问题,它却是很有帮助:
上面的代码中显示了 for-else 语句的上风,由于 else 下面的语句只有当内循环实行完成并没有任何中断的时候才实行。
如果对 for-else 还不熟习,可以看一下下面的代码,是 for-else "翻译"过来的写法:
总之,这个方法很可以,便是 for-else 这种形式不好理解。
5. 将嵌套循环放在一个函数里如果我们将嵌套循环放在一个函数中,那么跳出嵌套循环是非常大略的,由于我们可以利用 return 这个关键词替代 break 。
如上所示,这个办理方案就显得更加优雅了,既不须要"旗帜"变量,也不须要非常处理或是 for-else 语法以及多余的条件判断。
函数的用法在 Python 里是很灵巧的,我们可以很随意马虎的创建一个嵌套函数或是一个闭包函数。如果这个跳出嵌套循环的函数在调用它的函数里只利用一次,那么我们可以这样写:
不过,利用嵌套函数看起来并不怎么"优雅"。
总结这里我们理解了5种跳出嵌套循环的方法,虽然每种方法都没有 PHP 来的大略直接,但我们也是可以实现这样的操作地。作为编程职员我们该当理解措辞的特性,在不同情形下用不同的方法办理问题。
末了感谢阅读,如果此文对您有帮助,请点赞或添加关注。