如果有大量的python字符串需要连接在一起,那么强烈建议你使用join, 而不是用+运算符。之所这样建议,并非+运算符无法胜任连接字符串的操作,而是出于性能考虑,下面这段代码测试拼接相同字符串时两种不同方法的性能
import random
import time
def get_random_str():
lst = []
for i in range(20):
lst.append(chr(random.randint(97, 122)))
return ''.join(lst)
str_lst = [get_random_str() for i in range(100)]
# 使用 + 拼接字符串
str_link = ""
t1 = time.time()
for item in str_lst:
str_link += item
t2 = time.time()
print("使用+拼接字符串耗时: ", t2-t1)
# 使用join函数拼接字符串
str_link = ""
t3 = time.time()
str_link = ''.join(str_lst)
t4 = time.time()
print("使用join函数拼接字符串耗时: ", t4-t3)
程序输出结果
使用+拼接字符串耗时: 4.506111145019531e-05
使用join函数拼接字符串耗时: 1.9073486328125e-06
反复试验,join的性能是+运算符的20倍。造成这一差距的主要原因在于内存申请的方式不同。在使用+运算符时,每一次循环都需要为str_link申请新的内存,字符串是不可变对象,你不能继续使用str_link在内存中原有的区域,只能在完成计算后,为结果申请一片新的内存区域,然后让str_link指向它。使用join时,并不存在反复申请内存的情况,因为事先就已经知道有多少字符串需要拼接,那么可以一次性将内存申请好,存储拼接后的字符串。
QQ交流群: 211426309