如何有效地将一个字符串附加到另一个字符串?有没有更快的替代方案:

var1 = "foo"
var2 = "bar"
var3 = var1 + var2

若要处理列表中的多个字符串,请参见如何将列表中的项连接(联接)到单个字符串。

看我如何把一个变量的值在一个字符串(插值到字符串)?如果某些输入不是字符串,但结果仍然应该是字符串。


当前回答

不喜欢。

也就是说,在大多数情况下,最好一次性生成整个字符串,而不是追加到现有的字符串。

例如,不要这样做:obj1.name + ":" + str(obj1.count)

相反:使用“%s:%d”% (obj1.name, obj1.count)

这样更容易阅读,也更有效率。

其他回答

另一种选择是使用.format,如下所示:

print("{}{}".format(var1, var2))

如果您需要执行许多附加操作来构建一个大字符串,您可以使用StringIO或cStringIO。接口就像一个文件。即:你写东西是为了给它附加文本。

如果你只是附加两个字符串,那么只需使用+。

基本上没有区别。唯一一致的趋势是Python似乎在每个版本中都变得越来越慢……:(


List

%%timeit
x = []
for i in range(100000000):  # xrange on Python 2.7
    x.append('a')
x = ''.join(x)

Python 2.7

1圈,最好的3:7.34秒每圈

Python 3.4

1个循环,3个最好:7.99 s每循环

Python 3.5

1个循环,最好的3个循环:8.48秒

Python 3.6

1个循环,最好的3:9.93秒每循环


字符串

%%timeit
x = ''
for i in range(100000000):  # xrange on Python 2.7
    x += 'a'

Python 2.7:

1个循环,最好的3:7.41秒每循环

Python 3.4

1个循环,最好的3:9.08秒每循环

Python 3.5

1个循环,最好的3:8.82秒每循环

Python 3.6

1个循环,最好的3:9.24秒每循环

a='foo'
b='baaz'

a.__add__(b)

out: 'foobaaz'

使用add函数添加字符串:

str1 = "Hello"
str2 = " World"
str3 = str1.__add__(str2)
print(str3)

输出:

Hello World