Python中的字符串添加真的比使用join慢吗?

时间:2017-10-26 13:45:03

标签: python string performance

此问题涉及Is list join really faster than string concatenation in python?https://waymoot.org/home/python_string/

我想演示使用+来连接字符串比使用"".join(...)要慢。但不知怎的,我失败了:

%%timeit
result = ""
for i in range(3000000):
    result = result + 100 * str(i)

3.28 s ± 46.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

%%timeit
result = []

for i in range(3000000):
    result.append(100 * str(i))

result = "".join(result)

4.34 s ± 116 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

我使用Python 3.6,我的假设是最新版本优化字符串添加。对此有何评论?

1 个答案:

答案 0 :(得分:3)

问题是你在比较中不公平。特别是在你的第二个片段中,你犯了一个错误,就是计时要创建要加入的字符串。附加物可能会占据主导地位。

首先我们创建要加入的元素。

strings = []

for i in range(3000000):
    strings.append(100 * str(i))

计时字符串连接

%%timeit
result = ''
for i in strings:
   result = result + i

1.65 s ± 23.3 ms per loop

现在计算连接方法

%timeit result = ''.join(strings)

571 ms ± 10.3 ms per loop

因此,连接比连接更快的说法是正确的!