这五种 Python 字符串连接方式,你都知道吗?

字符串连接,就是将2个或以上的字符串合并成一个,看上去连接字符串是一个非常基础的小问题,但是在Python中,我们可以用多种方式实现字符串的连接,稍有不慎就有可能因为选择不当而给程序带来性能损失。

方法1:加号连接

很多语言都支持使用加号连接字符串,Python也不例外,只需要简单的将2个或多个字符串相加就可以完成拼接。

a = 'Python'
b = '学习者' 

print(a + b)  

输出

Python学习者

方法2:使用%操作符

在Python 2.6以前,%操作符是唯一一种格式化字符串的方法,它也可以用于连接字符串。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a = 'Python'
b = '学习者'

print('%s%s' % (a, b)) 

输出

Python学习者 

方法3:使用format方法

format方法是Python 2.6中出现的一种代替%操作符的字符串格式化方法,同样可以用来连接字符串。

a = 'Python'
b = '学习者'

print('{}{}'.format(a, b))

输出

Python学习者 

方法4:使用f-string

Python 3.6中引入了Formatted String Literals(字面量格式化字符串),简称f-string,f-string是%操作符和format方法的进化版,使用f-string连接字符串的方法和使用%操作符、format方法类似。

a = 'Python'
b = '学习者'

print(f'{a}{b}) 

输出

Python学习者 

方法5:使用str.join()方法

字符串有一个内置方法join,其参数是一个序列类型,例如数组或者元组等。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
a = 'Python'
b = '学习者'

print(''.join([a, b]))  

输出

Python学习者 

对比测试

既然连接字符串有这么多方法,那么使用时到底选择哪种呢?我们从代码可读性和性能两个层面来评估一下上面5种方法。

使用timeit模块,分别执行上述5种方法的示例代码100000次,执行时间如图。

在这里插入图片描述
可以看到,%操作符、format和f-string都是字符串格式化方法,性能依次递增,加号连接的性能和f-string不相上下。

有一点需要注意的是,字符串类型是不可变的,所以每一次应用加号连接字符串都会生成一个新的字符串,连接多个字符串时,效率低下就是必然的了,我们将一次连接的字符串提升到10个和20个,再来进行2轮测试,下面是连接20个字符串时的耗时情况。

在这里插入图片描述

和连接两个字符串时的结果出现了一些不同,首先使用加号连接的方式在字符串数量较多时(大于10个),性能会急剧下降,str.join()方法在连接大量字符串时性能最好。

总结

  • 连接少量字符串时

使用加号连接符在性能和可读性上都是明智的,如果对可读性有更高的要求,并且使用的Python 3.6以上版本,f-string也是一个非常好的选择,例如下面这种情况,f-string的可读性显然比加号连接好得多。

a = f'姓名:{name} 年龄:{age} 性别:{gender}'
b = '姓名:' + name + '年龄:' + age + '性别:' + gender
  • 连接大量字符串时

join和f-string都是性能最好的选择,选择时依然取决于你使用的Python版本以及对可读性的要求,f-string在连接大量字符串时可读性并不一定好。切记不要使用加号连接,尤其是在for循环中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值