Python字符串_拼接+还是join

常用的join方法用来将列表或元祖中包含的多个字符串连接成一个字符串

newstr = str.join(iterable) 

 

newstr:表示合并后生成的新字符串; 

str:用于指定合并时的分隔符;如空格、逗号等 

iterable:做合并操作的源字符串数据,允许以列表、元组等形式提供。

str2 = ['A', 'C', 'E']
print("".join(str2))

输出 A C E
  • 字符串拼接+和json方式对比
a = "test1"
b = "test2"

print(a+b)
print("".join([a, b]))

输出
test1test2
test1test2

两种方式在输出结果上一致的,性能上有区别对比如下:

import timeit

def plus(strlist):
   return "".join(strlist)

def join(strlist):
   result = ""
   for v in strlist:
      result = result+v
   return result


strlist = ["a1","a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10"]
timer1 = timeit.Timer("plus(strlist)", "from __main__ import strlist, plus")
timer2 = timeit.Timer("join(strlist)", "from __main__ import strlist, join")
time1 = timer1.timeit(number=100000)
time2 = timer2.timeit(number=100000)
print("join: %f, plus: %f" % (time1, time2))

输出:
join: 0.031420, plus: 0.114786

通过python timeit模块即对代码效率进行检测运行耗时的模块来对比性能,当执行的次数越多时性能差异越明显,分析下原因:

字符串是不可变对象,当使用"+"拼接字符串时,每次执行+便会申请一块的内存,将复制上次计算的结果+本次操作结果到这块内存中,因此+在不断申请内存和复制

而join连接字符串时,会先计算需要多大内存存放结果,然后一次申请内存将连接的字符串值复制过去

因此,在连接字符串数组时建议优先使用join;

posted @ 2023-03-25 11:29  Linazhu  阅读(38)  评论(0编辑  收藏  举报