写点什么

Python 循环控制

  • 2024-07-16
    福建
  • 本文字数:1869 字

    阅读完需:约 6 分钟

技术背景


循环控制是每一门编程语言的基础,最常用的就是 for 循环和 while 循环。使用循环可以很大程度上简化代码的编写,可读性也很强。这里介绍 Python 的 for 循环基本操作和多重循环的控制。


单层 for 循环


这里用一个最简单的打印数字的 for 循环来演示普通单层 for 循环的控制:

for i in (1, 2, 3):     print (i)
复制代码


输出结果为:

123
复制代码


值得一提的是,Pythonic 的写法使得我们可以把这一串的循环写到一行里面:

for i in (1, 2, 3): print (i)
复制代码


输出结果是一样的,但是可以很大程度上缩略简单代码的行数。对于比较复杂的循环体,建议还是分行来写,提升代码可读性。


双重 for 循环


我们还是使用打印数字的简单案例:

for i in (1, 2, 3):    for j in (4, 5):        print (i, j)
复制代码


输出结果为:

1 41 52 42 53 43 5
复制代码


那么类似的,双重循环也可以使用一些 Pythonic 的写法:

from itertools import productfor i, j in product((1, 2, 3), (4, 5)): print (i, j)
复制代码


输出结果依然是一样的,但是代码量从三行缩减到了两行。这里顺带介绍另一个情况,在循环内操作多个对象:

a = (1, 2, 3)b = (4, 5, 6)for i in range(3):    print (a[i], b[i])
复制代码


输出结果为:

1 42 53 6
复制代码


那么其实也可以用 zip 打包的方法进行循环:

for i, j in zip((1, 2, 3), (4, 5, 6)): print (i, j)
复制代码


当然,输出结果也是跟上面的案例一致的。


单层循环控制


常用的控制句柄就是continuebreakpass,然后结合if...elif...else来使用。还是用这个打印数字的示例,但是我们只打印奇数:

for i in (1, 2, 3):    if i % 2 == 1:        print (i)
复制代码


输出结果为:

13
复制代码


这里条件控制内容为:当得到的数为奇数时,打印该数。而如果为偶数,则执行 if 从句之外的内容,因为这里函数之外没有其他操作,因此就不打印。如果需要打印,我们可以加上一个打印操作:

for i in (1, 2, 3):    if i % 2 == 1:        print (i)    else:        print ('Even: {}'.format(i))
复制代码


输出结果为:

1Even: 23
复制代码


条件判断可以结合 continue 来使用,continue 表示跳过余下所有的操作,执行循环的下一步。例如上面这个例子,假设我们不使用 else 语句,直接在 if 内部加上一个 continue,也是可以实现同样功能的:

for i in (1, 2, 3):    if i % 2 == 1:        print (i)        continue    print ('Even: {}'.format(i))
复制代码


输出结果为:

1Even: 23
复制代码


如果说达到条件不想继续循环了,可以使用 break:

for i in (1, 2, 3):    if i % 2 == 1:        print (i)    else:        print ('Even: {}'.format(i))        break
复制代码


输出结果为:

1Even: 2
复制代码


这里到出现第一个偶数之后,就退出了循环。


多层循环控制


对于 if 和 continue、break 等语句的使用逻辑,在多层循环下和单层循环是一致的。但是这里 break 只能跳出一层循环,不能跳出两层循环:

for i in (1, 2, 3):    for j in (4, 5):        if i + j == 6:            break        print (i, j)
复制代码


输出结果为:

1 43 43 5
复制代码


这里输出结果跳过了(1,5),(2,4),(2,5)这几个组合,但是后面的依然都可以正常的输出。如果想退出多层循环应该怎么操作呢?可以参考下下面这个案例:

for i in (1, 2, 3):    for j in (4, 5):        if i + j == 7:            break        print (i, j)    else:        continue    break
复制代码


输出结果为:

1 41 52 4
复制代码


这里我们稍微改了一下条件,当i+j=7时,退出所有循环。这里在内部循环中触发了一个 break 之后,到外层循环会跳过 else 去执行第二个 break,也就是退出所有的循环。但是如果内部循环中没有触发 break,也就是满足 if 的条件,那么到了外层循环就会进入到 else 的语句中,也就是执行 continue 语句。因此,如果需要在满足条件时退出多层的循环,那么就使用for...[for...if...]else...break这样的形式去写就可以了,然后把外层循环非退出场景的任务写到 else 语句下就可以了。


在上面这个案例中,假如没有设定这个 continue 语句,那么结果会是这样的:

for i in (1, 2, 3):    for j in (4, 5):        if i + j == 7:            break        print (i, j)    break
复制代码


输出:

1 41 5
复制代码


也就是说,不论是否满足内循环里面的 if 条件,到了外层循环都是直接 break 退出,所以一般我们还是会通过else...continue来继续执行外层循环。


总结概要


本文介绍了 Python 编程语言中关于 for 循环和 if 条件控制的一些基本使用。包含了单层循环的退出机制和多层循环的退出机制,使得我们在满足特定条件时,可以直接结束多层循环。


文章转载自:Dechin 的博客

原文链接:https://www.cnblogs.com/dechinphy/p/18302756/for-control

体验地址:http://www.jnpfsoft.com/?from=infoq

用户头像

还未添加个人签名 2023-06-19 加入

还未添加个人简介

评论

发布
暂无评论
Python循环控制_Python_不在线第一只蜗牛_InfoQ写作社区