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 UNIX_TIMESTAMP时间处理方法分析
Apr 18 Python
Python利用ElementTree模块处理XML的方法详解
Aug 31 Python
使用python将时间转换为指定的格式方法
Nov 12 Python
Python中实现单例模式的n种方式和原理
Nov 14 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
Jun 13 Python
Django 中自定义 Admin 样式与功能的实现方法
Jul 04 Python
Python在OpenCV里实现极坐标变换功能
Sep 02 Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 Python
Python selenium模块实现定位过程解析
Jul 09 Python
python SOCKET编程基础入门
Feb 27 Python
利用Python第三方库实现预测NBA比赛结果
Jun 21 Python
Python Pandas数据分析之iloc和loc的用法详解
Nov 11 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 MsSql server时遇到的中文编码问题
2009/06/11 PHP
php 正则匹配函数体
2009/08/25 PHP
基于empty函数的输出详解
2013/06/17 PHP
ini_set的用法介绍
2014/01/07 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
PHP中file_exists使用中遇到的问题小结
2016/04/05 PHP
功能强大的PHP发邮件类
2016/08/29 PHP
php正确输出json数据的实例讲解
2018/08/21 PHP
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
简单的js表单验证函数
2013/10/28 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
Jquery Ajax xmlhttp请求成功问题
2015/02/04 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
浅谈JavaScript函数的四种存在形态
2016/06/08 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
javascript 秒表计时器实现代码
2017/03/09 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
原生js实现文件上传、下载、封装等实例方法
2020/01/05 Javascript
从零使用TypeScript开发项目打包发布到npm
2020/02/14 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
2020/03/03 Javascript
JS中循环遍历数组的四种方式总结
2021/01/23 Javascript
Python格式化压缩后的JS文件的方法
2015/03/05 Python
python基本语法练习实例
2017/09/19 Python
Python实现的读取/更改/写入xml文件操作示例
2018/08/30 Python
Python如何实现强制数据类型转换
2019/11/22 Python
pytorch实现对输入超过三通道的数据进行训练
2020/01/15 Python
一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系
2020/07/03 Python
static函数与普通函数有什么区别
2015/12/25 面试题
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
部门年终奖分配方案
2014/05/07 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
致创业的您:这类人不适合餐饮创业
2019/08/19 职场文书
如何使JavaScript休眠或等待
2021/04/27 Javascript