中国建设之乡是哪里,网站优化连云港哪家强?,哪些公司做网站改造,万全孔家庄做网站建议#xff1a;字符串拼接操作尽量多用join#xff0c;而减少用”“
join操作时会先计算字符操作所用到的空间总和大小#xff0c;然后申请内存。然后进行字符串连接操作。所以join的时间复杂的近似O(n)。
操作符连接操作符时#xff0c;由于字符串是不可变对象#xff0…建议字符串拼接操作尽量多用join而减少用”“
join操作时会先计算字符操作所用到的空间总和大小然后申请内存。然后进行字符串连接操作。所以join的时间复杂的近似O(n)。
操作符连接操作符时由于字符串是不可变对象所以多个字符串拼接操作时从前向后的依此计算用前一次的计算结果再和下一个字符串拼接。所以每次操作都需要申请一块新的内存。举例S1S2S3…Sn实际过程是1、先申请一块内存2、将S1、S2复制到这块内存中(这样这块内存就是S1S2)3、继续第一步申请内存4、继续把第二步的内存内容和S3复制到第三步申请的内存。然后重复第一步到第二步至计算到Sn。所以操作符”“的时间复杂的近似On^2
对于不同个数字符串拼接操作时join和所用时间对比(python2.7环境运行结果)
链接字符串数量 join操作消耗时间 操作消耗时间
3 0.011083841323852539 0.02231597900390625
10 0.014094829559326172 0.05936312675476074
100 0.1445930004119873 0.6129770278930664
1000 1.340691089630127 6.07816481590271
10000 13.942554950714111 61.60126209259033
参考计算运算上面时间的代码#!/usr/bin/env python
# -*- coding: utf-8 -*-
import timeit
strlist [it is a value string will not keep in memorty for n in range(100000)]
def join_test():
return .join(strlist)
def plus_test():
result
for i,v in enumerate(strlist):
result result v
return result
if __name__ __main__:
x [3,10,100,1000,10000]
jointd {3:0,10:0,100:0,1000:0,10000:0}
plustd {3:0,10:0,100:0,1000:0,10000:0}
for i in x:
jointimer timeit.Timer(join_test(),from __main__ import join_test)
jointd[i] jointimer.timeit(numberi)
plustimer timeit.Timer(plus_test(),from __main__ import plus_test)
plustd[i] plustimer.timeit(numberi)
print (join use time:\n,jointd)
print (plus use time:\n, plustd)