此问题涉及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
,我的假设是最新版本优化字符串添加。对此有何评论?
答案 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
因此,连接比连接更快的说法是正确的!