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深入学习之对象的属性
Aug 31 Python
介绍Python中几个常用的类方法
Apr 08 Python
python实现一次创建多级目录的方法
May 15 Python
python通过加号运算符操作列表的方法
Jul 28 Python
python使用super()出现错误解决办法
Aug 14 Python
python下10个简单实例代码
Nov 15 Python
对python程序内存泄漏调试的记录
Jun 11 Python
Python3.5实现的罗马数字转换成整数功能示例
Feb 25 Python
python使用tkinter库实现五子棋游戏
Jun 18 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
Python基于Tkinter编写crc校验工具
May 06 Python
Pytorch实现WGAN用于动漫头像生成
Mar 04 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
phpmyadmin的#1251问题
2006/11/25 PHP
php基础知识:类与对象(5) static
2006/12/13 PHP
php中的观察者模式简单实例
2015/01/20 PHP
php简单实现sql防注入的方法
2016/04/22 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
jquery控制listbox中项的移动并排序
2009/11/12 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
解决Vue2.0自带浏览器里无法打开的原因(兼容处理)
2017/07/28 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
Vue.js中对css的操作(修改)具体方式详解
2018/10/30 Javascript
微信小程序的tab选项卡的实现效果
2019/05/15 Javascript
Linux系统上Nginx+Python的web.py与Django框架环境
2015/12/25 Python
Linux 发邮件磁盘空间监控(python)
2016/04/23 Python
利用python实现xml与数据库读取转换的方法
2017/06/17 Python
python打包压缩、读取指定目录下的指定类型文件
2018/04/12 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
python多线程http压力测试脚本
2019/06/25 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
如何使用 Flask 做一个评论系统
2020/11/27 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
做一个能自适应高度的textarea的示例代码
2019/09/06 HTML / CSS
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
大三在校生电子商务求职信
2013/10/29 职场文书
预备党员转正考核材料
2014/06/03 职场文书
文员岗位职责
2015/02/04 职场文书
创卫工作总结2015
2015/04/22 职场文书
导师鉴定意见
2015/06/05 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
优质服务标语口号
2015/12/26 职场文书
Django drf请求模块源码解析
2021/06/08 Python