def func(num):
s = 'first'
for i in range(num):
s += 'lucky'
return s
def func1(num):
s = 'first'
s += 'lucky'* num
return s
func的算法效率在num超过20后,比func1低一个数量级
原因:字符串是不可变类型,func每次循环拼接重新赋值时需要在内存中申请开辟新的空间
func1一次计算出所需的内存空间,节约时间,提升效率
python官方推荐使用join方法代替+来拼接字符串
------
def multip():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in multip()])
结果: [6,6,6,6]
原方法等效于:
"""
拆分:
"""
def multip():
fun_list=[]
i = 0
fun = lambda x:i*x
fun_list.append(fun)
i = 1
fun = lambda x:i*x
fun_list.append(fun)
i = 2
fun = lambda x:i*x
fun_list.append(fun)
i = 3
fun = lambda x:i*x
fun_list.append(fun)
#此时i已经等于3了,fun_list=[lambda x:i*x,lambda x:i*x,lambda x:i*x,lambda x:i*x]
#特别注意 lambda一直没有调用。
return fun_list