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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
Python简单日志处理类分享
Feb 14 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
在centos7中分布式部署pyspider
May 03 Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 Python
python 生成图形验证码的方法示例
Nov 11 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
Aug 06 Python
python文件操作的简单方法总结
Nov 07 Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 Python
通过实例解析Python return运行原理
Mar 04 Python
python中用ctypes模拟点击的实例讲解
Nov 26 Python
详解Python中string模块除去Str还剩下什么
Nov 30 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 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
js函数的引用, 关于内存的开销
2012/09/17 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
JavaScript获取网页表单action属性的方法
2015/04/02 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
javascript回到顶部特效
2016/07/30 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
详解AngularJS之$window窗口对象
2018/01/17 Javascript
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
layui实现鼠标移动到单元格上显示数据的方法
2019/09/11 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
在vue中对数组值变化的监听与重新响应渲染操作
2020/07/17 Javascript
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
浅谈django model postgres的json字段编码问题
2018/01/05 Python
Python简易版图书管理系统
2019/08/12 Python
Python urllib2运行过程原理解析
2020/06/04 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
挂科检讨书范文
2014/02/20 职场文书
医学求职信
2014/05/28 职场文书
帮一个朋友写的求职信
2014/08/09 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
六年级情感作文之500字
2019/10/23 职场文书