Python 中,字符串连接效率最高的方式是?一定出乎你的意料
网上很多文章人云亦云,字符串连接应该使用「join」方法而不要用「+」操作。说前者效率更高,它以更少的代价创建新字符串,如果用「+」连接多个字符串,每连接一次,就要为字符串分配一次内存,效率显得有点低,这样的解释听起来很有道理,但 Cpython 解释器是不是真的按照我们说的这样呢?
今天做了一个试验,结果可能会出乎你的意料。
'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
defjoin(n):s = "".join((str(i) fori inrange(n)))defformat(n):( "{}"* n).format(*(i fori inrange(n)))defplus(n):s = ""fori inrange(n):s += str(i)
上面 3 个函数分别表示用「join」和「format」还有「+」操作来连接字符串,从 0 到 n,总共 n 个数字连接起来构成一个新的字符串,形如:1234567891011……n。
下面是测试脚本:
每组取了15个样本数据,分别用 1,2,4,8,… 8192 个数字相连接,得到的统计数据可以看出,在数据量非常少的时候,三者效率几乎没什么差异,当少于20个字符串连接时,用「+」效率甚至更高,不过,随着字符串的个数增多,「join」方法发挥出来效果了,而用「+」越来越慢。这点无论是 python2 还是 python3 基本上是一样的。
python2.7.10
python3.6.0
所以结论是:如果连接的字符串很少,只有几个或者十几个,完全可以通过「+」来连接,毕竟这种方式更直白,而超过一定个数之后,则应该采用「join」方法,只有在操作大数据的时候,两者的对比才明显。
通过现象看本质才能做到知其然并知其所以然。Cpython 编译器内部其实针对字符串做了非常多的优化工作。在下篇文章准备专门写一写字符串工作原理的文章,这里先买个瓜子,预知后事如何,请关注「Python之禅」
最后,做任何事我们都不能仅凭三言两语就听信于人,而应该带着质疑的精神去探索这个世界。(有感于最近一程序员因求职被卷入传销组织遇难)
Python 中,字符串连接效率最高的方式是?一定出乎你的意料相关推荐
- python中字符串的几种表达方式(用什么方式表示字符串)
今天在学习python的基础的内容,学习在python中如何操作字符串,在此记录下. 主要是python中字符串的几种表达,表示方式. python的几种表达方式 1 使用单引号扩起来字符串 > ...
- python字符串字面量有哪四种定义方式_python中字符串连接的四种方式
原博文 2018-12-05 14:28 − 以下实例展示了join()的使用方法 #!/usr/bin/python str = "-"; seq = ("a" ...
- JAVA中字符串连接效率的测试(续)
原:http://www.54xue.com/w/39/n-10839.html 分别测试了n=10,100,500,1000,5000,10000,20000的时候,三个对象连接字符串所花费的时间, ...
- python中如何连接两个字符串_python字符串连接的N种方式总结
python中有很多字符串连接方式,今天在写代码,顺便总结一下: 最原始的字符串连接方式:str1 + str2 python 新字符串连接语法:str1, str2 奇怪的字符串方式:str1 st ...
- python中连接符_python字符串连接的几种方式总结
本篇文章给大家分享的内容是关于python字符串连接的几种方式总结,有需要的朋友参考一下 python中有很多字符串连接方式,今天在写代码,顺便总结一下,从最原始的字符串连接方式到字符串列表连接,大家 ...
- python编程字符输入连接_python字符串连接的N种方式总结
python中有很多字符串连接方式,今天在写代码,顺便总结一下: 最原始的字符串连接方式:str1 + str2 python 新字符串连接语法:str1, str2 奇怪的字符串方式:str1 st ...
- python字符串怎么表示_python中字符串的几种表达方式(用什么方式表示字符串)...
原博文 2018-11-21 18:45 − 说明: 今天在学习python的基础的内容,学习在python中如何操作字符串,在此记录下. 主要是python中字符串的几种表达,表示方式. pytho ...
- JavaScript中字符串连接/拼接的四种方式
JavaScript中连接字符串的方式有4种,分别是使用加号运算符连接.使用${}配合反引号连接.使用concat()函数连接.使用join()函数连接. 1. 使用加号运算符 示例代码如下: let ...
- python中字符串
目录 1.字符串 2.什么叫字符串驻留机制呢? 3.驻留机制的几种情况(交互模式) 4.sys中的intern方法强制2个字符串指向同一个对象 5.PyCharm对字符串进行了优化处理(所以上述两个例 ...
最新文章
- 在ASP.NET Web API中使用OData的Action和Function
- 把java 工程转为 maven 工程
- 有关表格边框的css样式表语法说明
- boost::math模块使用 non_finite_num facet 的一个非常简单的例子
- 信号量、互斥体和自旋锁
- C#中POST数据和接收的几种方式
- haproxy keepalived_Haproxy+KeepAlived+Mycat实现高可用集群
- java图片资源存放_Java编程中图片文件放哪
- 8 WM配置-主数据-定义门(Dock Door)
- 团队DevOps实践之一
- BZOJ——3343: 教主的魔法 || 洛谷—— P2801 教主的魔法
- n 的第 k 个因子
- python如何执行代码_在Python中重新运行代码块
- 西门子编程使用的OB块解释
- 怎么制作GIF高清动态表情包
- 我要偷偷的学Python,然后惊呆所有人(第一天)
- python调用rarfile进行解压rar压缩包时,报了如下错误
- c语言面试(c语言面试基础知识)
- 刘彬20000词汇06
- org.springframework.dao.InvalidDataAccessApiUsageException: ERR wrong number of arguments for ‘srem‘