谨记,从开始就要培养良好的代码习惯。
时间复杂度衡量算法的效率,而循环语句更能直接的体现程序的效率。
引用高淇老师的教导:
- 尽量减少循环内部不必要的计算
- 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
- 局部变量查询较快,尽量使用局部变量
即LEGB规则
下面我们用一段代码来测试内循环计算量不同的情况下程序运行时间的不同:
#循环代码优化测试
import time
start = time.time()
for i in range(1000):
result = []
for m in range(10000):
result.append(i*1000+m*100)
end = time.time()
print("耗时:{0}".format((end-start)))
start2 = time.time()
for i in range(1000):
result = []
c = i*1000
for m in range(10000):
result.append(c+m*100)
end2 = time.time()
print("耗时:{0}".format((end2-start2)))
运行结果为:
耗时:2.6927947998046875
耗时:2.1851699352264404
而当我把内循环次数进一步增大为100000时的运行结果为:
耗时:27.680909395217896
耗时:22.808008670806885
可见上方程序要比下方程序多花费21.4%的时间。
最后强调三遍:
- 尽量减少循环内部不必要的计算
- 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
- 局部变量查询较快,尽量使用局部变量
- 尽量减少循环内部不必要的计算
- 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
- 局部变量查询较快,尽量使用局部变量
- 尽量减少循环内部不必要的计算
- 嵌套循环中,尽量减少内层循环的计算,尽可能向外提。
- 局部变量查询较快,尽量使用局部变量