python字符串拼接+和join的区别详解


Posted in Python onDecember 03, 2020

python在进行字符串的拼接时,一般有两种方法,一种是使用+直接相加,另一种是使用join

a = "tests"
b = "teststs"
 
# 使用 + 
c = a + b
 
# 使用join
c = "".join(a,b)

这两种,其实在性能上具有比较大的差别,当然如果拼接的字符串的个数不多,就感受不到这种差别。

先谈谈这两种拼接方式各自的原理吧。

1. 使用 +

首先需要知道的是,在python中字符串属于不可变对象。

当用操作符+连接字符串的时候,由于字符串是不可变对象,其工作原理实际上是这样的:如果要连接如下字符串:S1+S2+S3+.......+SN,执行一次+操作便会在内存中申请一块新的内存空间,并将上一次操作的结果和本次操作的右操作数复制到新申请的内存空间,即当执行S1+S2的时候会申请一块内存,并将S1、S2复制到该内存中,依次类推,这样就要进行N-1次内存空间的申请了,非常影响效率。

2.使用 join

当使用join时,会一开始就计算出所需要的总的内存空间,也就是说只需要进行一次内存空间的申请,相比 使用 + ,效率提升巨大。 

举个栗子

python字符串拼接+和join的区别详解

当依次增加字符串的个数,得到如下的时间对比:

python字符串拼接+和join的区别详解

不过也确实看出,只有当拼接的字符串个数达到较大级别时,才能被我们人为感知到吧,但是性能优化本来就是在多个地方一点点积累起来的。

总结

到此这篇关于python字符串拼接+和join区别的文章就介绍到这了,更多相关python字符串拼接+和join区别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
跟老齐学Python之折腾一下目录
Oct 24 Python
Python实现模拟时钟代码推荐
Nov 08 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
python利用MethodType绑定方法到类示例代码
Aug 27 Python
Python连接phoenix的方法示例
Sep 29 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
python遍历一个目录,输出所有的文件名的实例
Apr 23 Python
Windows上使用Python增加或删除权限的方法
Apr 24 Python
Python多进程multiprocessing.Pool类详解
Apr 27 Python
python3爬虫怎样构建请求header
Dec 23 Python
python的几种矩阵相乘的公式详解
Jul 10 Python
Python实现初始化不同的变量类型为空值
Jun 02 Python
python二维图制作的实例代码
Dec 03 #Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 #Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 #Python
用 Django 开发一个 Python Web API的方法步骤
Dec 03 #Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 #Python
python 使用cycle构造无限循环迭代器
Dec 02 #Python
python 使用csv模块读写csv格式文件的示例
Dec 02 #Python
You might like
php 随机排序广告的实现代码
2011/05/09 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
thinkphp项目如何自定义微信分享描述内容
2017/02/20 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
不同浏览器对回车提交表单的处理办法
2010/02/13 Javascript
解析Jquery取得iframe中元素的几种方法
2013/07/04 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
jquery获取form表单input元素值的简单实例
2016/05/30 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
python实现下载文件的三种方法
2017/02/09 Python
利用python模拟sql语句对员工表格进行增删改查
2017/07/05 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
解决Mac下使用python的坑
2019/08/13 Python
详解Python3定时器任务代码
2019/09/23 Python
Python实现元素等待代码实例
2019/11/11 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
Python实现手绘图效果实例分享
2020/07/22 Python
中学生在校期间的自我评价分享
2013/11/13 职场文书
绿色环保口号
2014/06/12 职场文书
《中国梦我的梦》小学生演讲稿
2014/08/20 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
领导班子整改措施
2014/10/24 职场文书
实施意见格式范本
2015/06/05 职场文书