Python中跳出循环的两种方法

 更新时间:2024年09月20日 11:54:33   作者:在线码BUG  
在 Python 中,跳出循环通常指的是使用 break 语句来结束一个循环结构,比如 for 循环或 while 循环,当程序执行到 break 语句时,循环会立即终止,程序会继续执行循环后面的代码,本文给大家介绍了Python中跳出循环的两种方法,需要的朋友可以参考下

我们经常遇到循环在进行到某一个特定的值时,需要跳出循环,或跳过这个值,python中早已为我们准备了这样的参数:break,continue

比如下面的for循环:

for i in range(1,10):
    print('循环了',i,'次')

结果显而易见如图: 

当我们想在第三次结束这个循环时可以用break这个参数来跳出循环,代码如下

for i in range(1,10):
    if i==3:
        break
    else:
        print('循环了',i,'次')

这是for循环就只会进行两次循环就会停止,如果如下:

还有一种参数continue,这个参数表示的是跳出本次循环,即本次循环不参与运算,代码使用如下:

for i in range(1,10):
    if i==3:
        continue
    else:
        print('循环了',i,'次')

结果如下:

当i=3时,循环是不进行的也就没有了输出结果。 

拓展:Python 跳出嵌套循环的5种方法

很多人说 Python 是给很优雅的语言,但凡事都有个弱点,有些时候对于某种情况,用 Python 实现起来却不那么"优雅"。

例如下面的例子,我们想要跳出这个嵌套循环:

for a in list_a:

for b in list_b:

if condition(a,b):

break

关键词 break 只能跳出这个循环中的内循环。那有没有什么方法一次性跳出所有循环? Python 里有没有哪个内置的关键词可以实现呢?

不幸的的是,没有。

有句老话讲的好,"没有对比就没有伤害", Python 做不到,其它的语言却可以,比如万人鄙视的 PHP:

foreach ($a_list as $a)

{

foreach ($b_list as $b)

{

if (condition($a, $b))

{

break 2; // 跳出两次循环

}

}

}

在 PHP 里 break 关键词后面跟着一个数组,表示要跳出循环的次数,默认值是1,表示跳出一次循环。

这是一个很简洁命令的解决方案,这里必须夸一句 PHP,这里它表现的不错。

不过 Python 毕竟是很灵活的语言,我们有很多方法可以解决上面的问题,下面我就介绍 5 中跳出嵌套循环的方法。

1. 使用"旗帜"变量

这是个有效的解决方案,我们定义一个变量,作为一个"旗帜",例如:

# 添加"旗帜"变量

break_out_flag = False

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

break_out_flag = True

break

if break_out_flag:

break

如上面的代码,break_out_flag 作为一个"旗手"告诉这个程序该跳出这个外循环了。

这个代码在执行上没什么问题,不过这显得我们的代码有点乱,因为我们引用了新的变量去解决这个问题,这个新变量并非非要引入的。

2. 引发异常

如果 break 关键词不能达到我们的期望,那么是否可以引入其他的操作呢,比如 Python 的异常处理技术,我们可以使用它跳出嵌套循环:

# 引发异常

try:

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

raise StopIteration

except StopIteration:

pass

就如上面代码所示,我们把异常"exception"当做关键词 break 使用,这样就可以一次跳出所有循环。

3. 使用相同的条件语句

由于一个条件语句可以中断一次循环,那么使用相同的条件语句同样也可以再一次中断一个循环,例如:

# 使用相同的条件语句

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

break

if j == 2 and i == 0:

break

上面的代码可行,但并不是一个好的解决方案,至少在效率上很差,因为重复执行一个条件语句会浪费很多时间。

4. 使用 For-Else 语句

Python 里有一个很特殊的语句:"for-else"。 它并不流行以至于很少有人知道它,因为习惯上 else 是搭配 if 来使用。

不过对于这个问题,它却是很有帮助:

# 使用 For-Else 语句

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

break

else: # 仅在内循环不中断时执行

continue

break

上面的代码中显示了 for-else 语句的优势,因为 else 下面的语句只有当内循环执行完成并没有任何中断的时候才执行。

如果对 for-else 还不熟悉,可以看一下下面的代码,是 for-else "翻译"过来的写法:

# 和 for-else 一样的

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

break

if not (j == 2 and i == 0):

continue

break

总之,这个方法很可以,就是 for-else 这种形式不好理解。

5. 将嵌套循环放在一个函数里

如果我们将嵌套循环放在一个函数中,那么跳出嵌套循环是非常简单的,因为我们可以使用 return 这个关键词替代 break 。

# 将嵌套循环放在一个函数里

def check_sth():

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

return

check_sth() # 执行这个函数

如上所示,这个解决方案就显得更加优雅了,既不需要"旗帜"变量,也不需要异常处理或是 for-else 语法以及多余的条件判断。

函数的用法在 Python 里是很灵活的,我们可以很容易的创建一个嵌套函数或是一个闭包函数。如果这个跳出嵌套循环的函数在调用它的函数里只使用一次,那么我们可以这样写:

def out_func():

# 这里干点啥

def check_sth():

for i in range(5):

for j in range(5):

if j == 2 and i == 0:

return

# 这里干点别的

check_sth() # 执行这个函数

# 这里继续干

不过,使用嵌套函数看起来并不怎么"优雅"。

总结

这里我们了解了5种跳出嵌套循环的方法,虽然每种方法都没有 PHP 来的简单直接,但我们也是可以实现这样的操作地。作为编程人员我们应该了解语言的特性,在不同情况下用不同的方法解决问题。

到此这篇关于Python中跳出循环的两种方法的文章就介绍到这了,更多相关Python跳出循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PyTorch的torch.cat用法

    PyTorch的torch.cat用法

    这篇文章主要介绍了PyTorch的torch.cat用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • python保留两位小数的五种方法

    python保留两位小数的五种方法

    很多小伙伴在学习python的时候可能会遇到对数据进行格式化输出的需求,其中最常见的需求为:保留几位小数,今天小编就以python怎么保留两位小数为例,来介绍一下python数据格式化的方法,需要的朋友可以参考下
    2024-08-08
  • 详解MySQL数据类型int(M)中M的含义

    详解MySQL数据类型int(M)中M的含义

    int(M)拆分来说,int是代表整型数据那,么中间的M应该是代表多少位了,后来查mysql手册也得知了我的理解是正确的,下面这篇文章小编就来举例详细说明。 文中介绍的很详细,相信对大家的理解和学习很有帮助,有需要的朋友们下面就来学习学习吧。
    2016-11-11
  • Python中缓存lru_cache的基本介绍和讲解

    Python中缓存lru_cache的基本介绍和讲解

    缓存是一种将定量数据加以保存以备迎合后续请求的处理方式,旨在加快数据的检索速度,下面这篇文章主要给大家介绍了关于Python中缓存lru_cache的基本介绍和讲解的相关资料,需要的朋友可以参考下
    2022-01-01
  • Python深入学习之装饰器

    Python深入学习之装饰器

    这篇文章主要介绍了Python深入学习之装饰器,装饰器(decorator)是一种高级Python语法,本文全面介绍了Python中的装饰器,需要的朋友可以参考下
    2014-08-08
  • Python的Pandas库中使用DataFrame筛选和删除含特定值的行与列

    Python的Pandas库中使用DataFrame筛选和删除含特定值的行与列

    Pandas是一个强大的数据处理库,提供了各种功能来操作和处理数据,这篇文章主要给大家介绍了关于Python的Pandas库中使用DataFrame筛选和删除含特定值的行与列的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • 最好的Python DateTime 库之 Pendulum 长篇解析

    最好的Python DateTime 库之 Pendulum 长篇解析

    datetime 模块是 Python 中最重要的内置模块之一,它为实际编程问题提供许多开箱即用的解决方案,非常灵活和强大。例如,timedelta 是我最喜欢的工具之一
    2021-11-11
  • django中websocket的具体使用

    django中websocket的具体使用

    本文主要介绍了django中websocket的具体使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • Pytorch torch.repeat_interleave()用法示例详解

    Pytorch torch.repeat_interleave()用法示例详解

    torch.repeat_interleave() 是 PyTorch 中的一个函数,用于按指定的方式重复张量中的元素,这篇文章主要介绍了Pytorch torch.repeat_interleave()用法示例详解,需要的朋友可以参考下
    2024-01-01
  • Python数据可视化之绘制柱状图和条形图

    Python数据可视化之绘制柱状图和条形图

    今天带大家学习怎么利用Python绘制柱状图,条形图,文中有非常详细的代码示例,对正在学习python的小伙伴们很有帮助,需要的朋友可以参考下
    2021-05-05

最新评论