练习题5-字符串拼接的注意点

本文探讨了Python中两种不同的字符串拼接方法的效率差异,并通过具体示例解释了为何一种方法优于另一种。此外,还分析了一个常见的闭包陷阱,展示了如何正确创建和使用闭包。
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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值