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生成url短链接的方法
May 04 Python
Python实现的简单dns查询功能示例
May 24 Python
Python编程对列表中字典元素进行排序的方法详解
May 26 Python
利用aardio给python编写图形界面
Aug 21 Python
Python生成短uuid的方法实例详解
May 29 Python
Python运维自动化之nginx配置文件对比操作示例
Aug 29 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
浅析python标准库中的glob
Mar 13 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
详解anaconda离线安装pytorchGPU版
Sep 08 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
第五节 克隆 [5]
2006/10/09 PHP
PHP下几种删除目录的方法总结
2007/08/19 PHP
php限制文件下载速度的代码
2015/10/20 PHP
PHP类的特性实例分析
2016/09/28 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
用 Javascript 验证表单(form)中多选框(checkbox)值
2009/09/08 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
javascript实现网页端解压并查看zip文件
2015/12/15 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
JS实现的二叉树算法完整实例
2017/04/06 Javascript
详解a++和++a的区别
2017/08/30 Javascript
关于vue 结合原生js 解决echarts resize问题
2020/07/26 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
[01:05:52]DOTA2-DPC中国联赛 正赛 Ehome vs Aster BO3 第一场 2月2日
2021/03/11 DOTA
python使用chardet判断字符串编码的方法
2015/03/13 Python
Python实现统计单词出现的个数
2015/05/28 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
Python如何获取文件路径/目录
2020/09/22 Python
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
Eclipse面试题
2014/03/22 面试题
Linux的文件类型
2016/07/05 面试题
党校学习思想汇报
2014/01/06 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
2016公司年会通知范文
2015/04/25 职场文书
Vue项目打包、合并及压缩优化网页响应速度
2021/07/07 Vue.js