python处理字符串效率_比较python中字符串+和join操作的效率

这段时间要准备一个语言培训,在做ppt的过程中,为了说明平常字符串操作使用哪种比较好学习到的一个方法进行效率的比较,在这里记录一下。

​#! /usr/bin/python

import timeit

str_list = ["This is a very long string here,

ahahhahahahahahhahahah" for n in range(100000)]

def

join_test():

return ''.join(str_list)

def

plus_test():

result =

''

for str_value in str_list:

result = result + str_value

return result

if __name__ == '__main__':

join_timer = timeit.Timer("join_test()", "from __main__ import

join_test")

print

join_timer.timeit(number=100)

plus_timer = timeit.Timer("plus_test()", "from __main__ import

plus_test")

print plus_timer.timeit(number=100)

从上面的分析检测就可以看出当字符串规模越大的时候它们效率差别越明显。造成这种结果的原因是由于使用操作符+做连接字符串的操作时,由于字符串是不可变对象。如果要去连接如下字符串S1+S2+S3+S4+S5+S6....+Sn时,执行一次+操作符便会在内存中申请一块新的内存空间,并将上一次操作的结果和本次操作的右操作数复制到新申请的内存空间。因此在N个字符串连接操作中会产生N-1个中间结果。N越大对内存申请和复制次数越多,+操作符的效率就越低。

而join方法连接字符串的时候,会首先计算需要申请的总的内存空间,然后一次性申请所需内存并将字符串中的每一个元素复制到内存中去,所以join的时间复杂度为O(n)。​

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值