如何有效地将一个字符串附加到另一个字符串?有没有更快的替代方案:
var1 = "foo"
var2 = "bar"
var3 = var1 + var2
若要处理列表中的多个字符串,请参见如何将列表中的项连接(联接)到单个字符串。
看我如何把一个变量的值在一个字符串(插值到字符串)?如果某些输入不是字符串,但结果仍然应该是字符串。
如何有效地将一个字符串附加到另一个字符串?有没有更快的替代方案:
var1 = "foo"
var2 = "bar"
var3 = var1 + var2
若要处理列表中的多个字符串,请参见如何将列表中的项连接(联接)到单个字符串。
看我如何把一个变量的值在一个字符串(插值到字符串)?如果某些输入不是字符串,但结果仍然应该是字符串。
当前回答
这取决于你想做什么。如果你正在将一个变量格式化为一个字符串来打印,例如,你想要输出如下:
Hello, Bob
给定名称Bob,您将希望我们%s。print("Hello, %s" % my_variable) 它是有效的,它适用于所有数据类型(所以你不需要做str(my_variable)就像你做的"a" + str(5)))。
其他回答
Python 3.6为我们提供了f字符串,这是一个令人高兴的东西:
var1 = "foo"
var2 = "bar"
var3 = f"{var1}{var2}"
print(var3) # prints foobar
你可以在花括号内做任何事情
print(f"1 + 1 == {1 + 1}") # prints 1 + 1 == 2
str1 = "Hello"
str2 = "World"
newstr = " ".join((str1, str2))
用一个空格作为分隔符连接str1和str2。你也可以做“”。Join (str1, str2,…)Str.join()接受一个可迭代对象,因此必须将字符串放在列表或元组中。
这和内置方法一样高效。
另一种选择是使用.format,如下所示:
print("{}{}".format(var1, var2))
基本上没有区别。唯一一致的趋势是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秒每循环
这取决于你想做什么。如果你正在将一个变量格式化为一个字符串来打印,例如,你想要输出如下:
Hello, Bob
给定名称Bob,您将希望我们%s。print("Hello, %s" % my_variable) 它是有效的,它适用于所有数据类型(所以你不需要做str(my_variable)就像你做的"a" + str(5)))。