首页 > 编程知识 正文

python 拼接字符串字作为字符串使用,Python字符串拼接操作

时间:2023-05-06 07:01:08 阅读:280258 作者:2758

曾经有次面试,面试官问我:怎么把字符串拼起来?

我心想,这么简单的问题还在问,毫不犹豫的回答 用 +

面试官说:你都不考虑性能的吗?

我。。。

今天就来探究下字符串拼接的性能。

方法一:用 +

加号虽然简单明了,但是性能肯定是不理想的,看一个简单的例子:

def add(lst): string='' for s in lst: string+=s print(id(string)) # 查看对象ID return string发现结果是:20954857589122095484872776209548487277620954848727762095484872776209560537988820956053798882095605379888209560537988820954848842162095484884216...

可见 字符串长度增加到一定程度,就创建了新的字符串对象,性能就出在这里

方法二:用join() 比较两种方法所用时间 1.+ def add(lst): string='' for s in lst: string+=s return string%timeit string=add(char)# 4.75 µs ± 400 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) 2.join %timeit string=''.join(char)# 681 ns ± 22.1 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

ps: 1 微秒 = 1000 纳秒

+所花费的时间约是join的6.98倍,合并的字符串越多,效果越明显,性能差异越大

另:使用reduce的时间比单纯使用for循环的时间更长:

from functools import reduce%timeit string=reduce(lambda x,y:x+y,char)# 7.04 µs ± 196 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。