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中的JSON模块
Apr 08 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
用python写个自动SSH登录远程服务器的小工具(实例)
Jun 17 Python
python实现淘宝秒杀脚本
Jun 23 Python
Python with用法:自动关闭文件进程
Jul 10 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
Python HTMLTestRunner测试报告view按钮失效解决方案
May 25 Python
利用python控制Autocad:pyautocad方式
Jun 01 Python
用python实现一个简单的验证码
Dec 09 Python
Python实现给PDF添加水印的方法
Jan 25 Python
Python可视化学习之seaborn调色盘
Feb 24 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编码规范-php coding standard
2007/03/16 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
php之可变函数的实例详解
2017/09/13 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
js鼠标滑过图片震动特效的方法
2015/02/17 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
jquery——九宫格大转盘抽奖实例
2017/01/16 Javascript
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
微信小程序slider组件使用详解
2018/01/31 Javascript
微信小程序绘制图片发送朋友圈
2019/07/25 Javascript
Python版实现微信公众号扫码登陆
2020/05/28 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
关于angular浏览器兼容性问题的解决方案
2020/07/26 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
Python简单获取自身外网IP的方法
2016/09/18 Python
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
Pytorch 实现自定义参数层的例子
2019/08/17 Python
python中有关时间日期格式转换问题
2019/12/25 Python
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
四年级语文教学反思
2014/02/05 职场文书
优秀部门获奖感言
2014/02/14 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
授权委托书
2014/09/17 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书
辩论赛主持人开场白
2015/05/29 职场文书