Python循环控制详解
目录
技术背景
循环控制是每一门编程语言的基础,最常用的就是for循环和while循环。使用循环可以很大程度上简化代码的编写,可读性也很强。这里介绍Python的for循环基本操作和多重循环的控制。
单层for循环
这里用一个最简单的打印数字的for循环来演示普通单层for循环的控制:
1
2
|
foriin(1,2,3):
print(i)
|
输出结果为:
1 2 3
值得一提的是,Pythonic的写法使得我们可以把这一串的循环写到一行里面:
1
|
foriin(1,2,3):print(i)
|
输出结果是一样的,但是可以很大程度上缩略简单代码的行数。对于比较复杂的循环体,建议还是分行来写,提升代码可读性。
双重for循环
我们还是使用打印数字的简单案例:
1
2
3
|
foriin(1,2,3):
forjin(4,5):
print(i, j)
|
输出结果为:
1 4
1 5
2 4
2 5
3 4
3 5
那么类似的,双重循环也可以使用一些Pythonic的写法:
1
2
|
fromitertoolsimportproduct
fori, jinproduct((1,2,3), (4,5)):print(i, j)
|
输出结果依然是一样的,但是代码量从三行缩减到了两行。这里顺带介绍另一个情况,在循环内操作多个对象:
1
2
3
4
|
a=(1,2,3)
b=(4,5,6)
foriinrange(3):
print(a[i], b[i])
|
输出结果为:
1 4
2 5
3 6
那么其实也可以用zip打包的方法进行循环:
1
|
fori, jinzip((1,2,3), (4,5,6)):print(i, j)
|
当然,输出结果也是跟上面的案例一致的。
单层循环控制
常用的控制句柄就是continue,break和pass,然后结合if...elif...else来使用。还是用这个打印数字的示例,但是我们只打印奇数:
1
2
3
|
foriin(1,2,3):
ifi%2==1:
print(i)
|
输出结果为:
1
3
这里条件控制内容为:当得到的数为奇数时,打印该数。而如果为偶数,则执行if从句之外的内容,因为这里函数之外没有其他操作,因此就不打印。如果需要打印,我们可以加上一个打印操作:
1
2
3
4
5
|
foriin(1,2,3):
ifi%2==1:
print(i)
else:
print('Even: {}'.format(i))
|
输出结果为:
1
Even: 2
3
条件判断可以结合continue来使用,continue表示跳过余下所有的操作,执行循环的下一步。例如上面这个例子,假设我们不使用else语句,直接在if内部加上一个continue,也是可以实现同样功能的:
1
2
3
4
5
|
foriin(1,2,3):
ifi%2==1:
print(i)
continue
print('Even: {}'.format(i))
|
输出结果为:
1
Even: 2
3
如果说达到条件不想继续循环了,可以使用break:
1
2
3
4
5
6
|
foriin(1,2,3):
ifi%2==1:
print(i)
else:
print('Even: {}'.format(i))
break
|
输出结果为:
1
Even: 2
这里到出现第一个偶数之后,就退出了循环。
多层循环控制
对于if和continue、break等语句的使用逻辑,在多层循环下和单层循环是一致的。但是这里break只能跳出一层循环,不能跳出两层循环:
1
2
3
4
5
|
foriin(1,2,3):
forjin(4,5):
ifi+j==6:
break
print(i, j)
|
输出结果为:
1 4
3 4
3 5
这里输出结果跳过了(1,5),(2,4),(2,5)这几个组合,但是后面的依然都可以正常的输出。如果想退出多层循环应该怎么操作呢?可以参考下下面这个案例:
1
2
3
4
5
6
7
8
|
foriin(1,2,3):
forjin(4,5):
ifi+j==7:
break
print(i, j)
else:
continue
break
|
输出结果为:
1 4
1 5
2 4
这里我们稍微改了一下条件,当i+j=7时,退出所有循环。这里在内部循环中触发了一个break之后,到外层循环会跳过else去执行第二个break,也就是退出所有的循环。但是如果内部循环中没有触发break,也就是满足if的条件,那么到了外层循环就会进入到else的语句中,也就是执行continue语句。因此,如果需要在满足条件时退出多层的循环,那么就使用for...[for...if...]else...break这样的形式去写就可以了,然后把外层循环非退出场景的任务写到else语句下就可以了。
在上面这个案例中,假如没有设定这个continue语句,那么结果会是这样的:
1
2
3
4
5
6
|
foriin(1,2,3):
forjin(4,5):
ifi+j==7:
break
print(i, j)
break
|
输出:
1 4
1 5
也就是说,不论是否满足内循环里面的if条件,到了外层循环都是直接break退出,所以一般我们还是会通过else...continue来继续执行外层循环。
总结概要
本文介绍了Python编程语言中关于for循环和if条件控制的一些基本使用。包含了单层循环的退出机制和多层循环的退出机制,使得我们在满足特定条件时,可以直接结束多层循环。
本文首发链接为:https://www.cnblogs.com/dechinphy/p/for-control.html
本站大部分文章、数据、图片均来自互联网,一切版权均归源网站或源作者所有。
如果侵犯了您的权益请来信告知我们删除。邮箱:1451803763@qq.com