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 smallseg分词用法实例分析
May 28 Python
python制作爬虫爬取京东商品评论教程
Dec 16 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
python 中split 和 strip的实例详解
Jul 12 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
详解Python odoo中嵌入html简单的分页功能
May 29 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 Python
Keras自定义实现带masking的meanpooling层方式
Jun 16 Python
python热力图实现简单方法
Jan 29 Python
Python WSGI 规范简介
Apr 11 Python
python 用递归实现通用爬虫解析器
Apr 16 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 session和cookie使用说明
2010/04/07 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
php相对当前文件include其它文件的方法
2015/03/13 PHP
让您的菜单不离网站
2006/10/03 Javascript
JavaScript的Function详细
2006/11/14 Javascript
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
JavaScript匿名函数与委托使用示例
2014/07/22 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
Angularjs 滚动加载更多数据
2016/03/17 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
Bootstrap 模态框(Modal)插件代码解析
2016/12/21 Javascript
基于Vuex无法观察到值变化的解决方法
2018/03/01 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
Vue移动端用淘宝弹性布局lib-flexible插件做适配的方法
2020/05/26 Javascript
Python AES加密模块用法分析
2017/05/22 Python
python实现Zabbix-API监控
2018/09/17 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
东南亚冒险旅行与活动:Adventoro
2019/10/16 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
Why we need EJB
2016/10/20 面试题
简短证婚人证婚词
2014/01/09 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
应聘教师求职信范文
2015/03/20 职场文书
员工手册董事长致辞
2015/07/29 职场文书
2016年社区国庆节活动总结
2016/04/01 职场文书
只用Python就可以制作的简单词云
2021/06/07 Python