pythonformat函数和字符串拼接_字符串拼接方式哪种快?使用Python分析连接字符的常用方法及性能...

上一篇文章我们分析了几种常用的字符串拼接方式,从使用场合和时机对几种方式进行了对比。今天,我们来对比一下这几种方式的性能,以便大家在以后的应用中能迅速找到最优性能的字符串拼接方式。

a8773912b31bb051c700119079033fb14bede0e5.jpeg?token=d6e0a189386c2405247763e4ed3a456d&s=1BBF92AA4EB0E8D6C88FC42C0300704A准备好了吗?马上开始

首先,我们创建一个函数

该函数的作用是:随机生成指定数目的字符串列表(字符串长度为5-8个字符)用于测试。

from random import choice, randint

from string import ascii_letters

def create_str(n):

# 字符列表

r_lst = []

for i in range(n):

# 生成n个字符串

tmp_str = ''

# 随机生成5-8位的字符串

for j in range(randint(5, 8)):

tmp_str += choice(ascii_letters)

r_lst.append(tmp_str)

return r_lst

看下效果,比如生成20个随机(5-8位)的字符串,我们直接使用create_str(20),即可获取。

7dd98d1001e9390135e78cf63495b1e234d1968b.jpeg?token=60469655586ee64b2b3279b1a41fac52&s=74187E9C8642794F748BB8F903007033首先创建一个用于生成字符串的函数

test_str = 'TVOgaNh'+'SsKEWLQM'+'KiacqJ'+'ipwoVhnc'+'EfiRNa'+'qGRgLs'+'RDLdFhn'+'IMyES'+'uDcMK'+'NuzDYQU'+'GOdrJ'+'LhyvA'+'aEgdF'+'kDDHv'+'hsKLZklO'+'KnXeDJNc'+'LvVeo'+'ExNDpCAJ'+'khuDHP'+'BjvuIuA'

其次,我们对测试方法进行分类

我们将前面讨论的方法分为三类(分类方法参照了脚本之家中Python猫发表的一篇《Python拼接字符串的7种方法总结》的博文)

格式化类(%、format()函数)

拼接类(+、join()函数)

插值类(F-strings)

分别取其中一个进行比较看下性能。

格式化类:%和format()函数比较

前提:随机生成1000、10000个字符串列表,使用for循环遍历添加每一个字符串最终获取拼接后的字符串。

f7246b600c3387442a944e3e01763cfcd62aa09a.jpeg?token=8600e15e10c26e6a51d9277106b053d8&s=A8C293421EA4BF6C4EED480F000070C2格式化类性能比较

从上图可以看到,format()函数和%拼接字符串性能差异不大,选择自己喜欢的就可以了,但是为了增加程序可读性,建议使用format()函数进行拼接。

拼接类:+和join()函数比较

前提:随机生成100000个字符串列表,通过各自方法(for循环和序列拼接)最终获取拼接后的字符串。

91ef76c6a7efce1b546b6d83e02816dbb58f65b2.jpeg?token=45c4399424776609341adc35aa09bd41&s=A8C2934A1EE0BF78025C0C0F0000E0C2拼接类性能比较

从上图可以看出,join()函数在数据量大时,性能明显优于'+'符号拼接。这是因为'+'符号拼接每次拼接时都会开辟一块新的内存空间。因此,在数据量较大时,字符换序列拼接建议直接使用join()函数。

插值类:F-strings分别比较拼接10000个和100000个字符串的效率

测试代码如下所示。

bf096b63f6246b60d7cdbf7abb81ff49500fa278.jpeg?token=e75f3617f0f4218ad92b48af30883ab5&s=A8C2A348CEA1DF7404F9640D0000E0C2F-strings插值类性能测试

我们与格式化类和拼接类分别进行比较,如下所示。

3bf33a87e950352ad0f004f3033a1ef7b3118b32.jpeg?token=e4e5acb44e1a76239c9d59ab405abd21&s=A0C093435BA487680E71241D0200F082F-strings插值类性能比较

得出什么结论?

字符串序列拼接,不论数据量大小,首选join()函数;

格式化类处理中,%和format()拼接差别不大,但是format()函数可读性要好一点;

在数据量小于100000,字符串拼接中F-strings性能优于其它拼接方法(前提是Python版本必须大于3.6.2);

数据量少、对程序性能要求不高、程序猿用脑过度时,选用‘+’拼接;

当涉及对字符串格式进行处理时,首选format()函数和F-strings方法。

4e4a20a4462309f76b5a955b3d77e9f6d6cad6c5.jpeg?token=de999d4d7e479ff05a303c32dfc4e5e5&s=BAB593AE58F38E920801BFE903008014未完待续

好了,今天的内容就到这里了,我们利用了两篇内容对Python中字符串拼接进行了总结测试,分析了常用的方法,在这些方法中,大家参照结论的基础上,选择自己喜欢常用的方法。有时候,在程序实现初期对性能不要考虑太多,考虑太多有时候会影响程序开发。但是,所谓熟能生巧,接触多了,在选择数据结构或者对数据结构进行处理时,就会自然而然的选择性能表现优秀的方式方法。建议多练习,平时多涉猎相关内容。“书到用时方恨少”,平时多练、多积累类似的知识点,对大家的编程学习也是很有益的。

喜欢的关注我,后续会推出更有意思的内容,大家有没更好的字符串处理办法呢?欢迎留言。

转载请注明出处,百家号:Python高手养成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值