继上次学完选择结构以后,今天还要介绍一种Python里我们并不陌生的结构:循环结构。在解决一些需要反复执行某个功能的问题时,它将是一个得心应手的工具。下面,就来认识一下Python中的两种循环和两个控制语句。
3.3.1 for循环与while循环
while循环一般用于循环次数难以提前确定的情况,也可以用于循环次数确定的情况。
for循环一般用于循环次数可以提前确定的情况,尤其是用于枚举序列或迭代对象中的元素。
PS:一般优先考虑使用for循环。
相同或不同的循环结构之间都可以互相嵌套,实现更为复杂的逻辑。并且for循环和while循环都可以带else。
while循环语句如下:
while 条件表达式:
循环体
[else: # 如果循环是因为break结束的,就不执行else中的代码
else子句代码块]
for循环语句如下:
for 取值 in 序列或迭代对象:
循环体
[else:
else子句代码块]
3.3.2 循环结构的优化
有些时候为了优化程序以获得更高的效率和运行速度,在编写循环语句时,应尽量减少循环内部不必要的计算,将与循环变量无关的代码尽可能地提取到循环之外。对于使用多重循环嵌套的情况,应尽量减少内层循环中不必要的计算,尽可能地向外提。下面给出一组优化前后的代码对比:
优化前的代码:
digits = (1, 2, 3, 4)
for i in range(1000):
result = []
for i in digits:
for j in digits:
for k in digits:
result.append(i*100+j*10+k)
优化后的代码:
for i in range(1000):
result = []
for i in digits:
i = i*100
for j in digits:
j = j*10
for k in digits:
result.append(i+j+k)
还值得注意的是,在循环中应尽量引用局部变量,因为局部变量的查询和访问速度比全局变量略块。另外,在使用模块中的方法时,可以通过将其直接导入来减少查询次数和提高运行速度。例如:
import time
import math
start = time.time() #获取当前时间
for i in range