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 深入理解yield
Sep 06 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
不要用强制方法杀掉python线程
Feb 26 Python
Python下载网络小说实例代码
Feb 03 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
Python数据可视化库seaborn的使用总结
Jan 15 Python
浅谈Python反射 & 单例模式
Mar 21 Python
对python tkinter窗口弹出置顶的方法详解
Jun 14 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 Python
PyCharm配置anaconda环境的步骤详解
Jul 31 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
Mar 04 Python
python基于turtle绘制几何图形
Jun 15 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 小乘法表实现代码
2009/07/16 PHP
php获取字段名示例分享
2014/03/03 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
2015/05/13 PHP
Zend Framework前端控制器用法示例
2016/12/11 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
javascript设计模式 封装和信息隐藏(上)
2012/07/24 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
使用AngularJS实现可伸缩的页面切换的方法
2015/06/19 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
Ionic + Angular.js实现图片轮播的方法示例
2017/05/21 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
layui加载表格,绑定新增,编辑删除,查看按钮事件的例子
2019/09/06 Javascript
用Angular实现一个扫雷的游戏示例
2020/05/15 Javascript
Python用模块pytz来转换时区
2016/08/19 Python
关于Django显示时间你应该知道的一些问题
2017/12/25 Python
Python数据可视化库seaborn的使用总结
2019/01/15 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
Python如何批量获取文件夹的大小并保存
2020/03/31 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
HTML5 Canvas 实现圆形进度条并显示数字百分比效果示例
2017/08/18 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
销售总监岗位职责
2014/01/04 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
2015年度内部审计工作总结
2015/05/20 职场文书
禁毒心得体会范文
2016/01/15 职场文书
CSS3 制作的彩虹按钮样式
2021/04/11 HTML / CSS
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
2021/08/23 MySQL
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis