一些技巧
2020-06-15 本文已影响0人
yousa_
- 开辟数组空间
不好的写法
a = [0 for _ in range(10000000)]
好的写法
a = [0] * 10000000
注意,这样搞是不对的
a = [ [0]*1000 ] * 1000
不等于
a = [ [0 for _ in range(1000)] for _ in range(1000)]
第一种相当于对[0]*1000 作了1000次浅拷贝,也就是说,当修改a[0][0] = 1时,a[1][0]、a[2][0]...a[999][0]也变成了1
2.循环问题中的优化
在循环时,尽可能多的利用内层循环,把大循环放在内层,如:
for i in range(1000):
for j in range(100):
for k in range(10):
operation()
差于
for i in range(10):
for j in range(100):
for k in range(1000):
operation()
3.import math
Pyhton中的math库和cmath库直接调用C语言中的函数接口,因此使用起来效率更高。
比如对于求幂次方的函数pow(),使用python自带函数pow()的时间复杂度为o(logn),而math.pow()执行浮点取幂,时间复杂度为o(1)
-
需要注意的是
使用math库时可能会出现数值越界的情况,C语言中的Integer不足以处理大型数据,因此我们这里最好用python自带的pow函数hhhh,二级反转。
举个例子:我们计算3^100,下面分别是math.pow()和pow()函数返回的结果