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中的Classes和Metaclasses详解
Apr 02 Python
分析并输出Python代码依赖的库的实现代码
Aug 09 Python
python脚本设置超时机制系统时间的方法
Feb 21 Python
让python 3支持mysqldb的解决方法
Feb 14 Python
Python中文编码知识点
Feb 18 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 Python
python经典趣味24点游戏程序设计
Jul 26 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
Sep 07 Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 Python
Python tkinter界面实现历史天气查询的示例代码
Aug 23 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
Python通用验证码识别OCR库ddddocr的安装使用教程
Jul 07 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-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
PHP7常量数组用法分析
2016/09/26 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
对laravel in 查询的使用方法详解
2019/10/09 PHP
制作高质量的JQuery Plugin 插件的方法
2010/04/20 Javascript
js querySelector和getElementById通过id获取元素的区别
2012/04/20 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
javascript基础知识分享之类与函数化
2016/02/13 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
Electron 如何调用本地模块的方法
2019/02/01 Javascript
vue 获取视频时长的实例代码
2019/08/20 Javascript
JS实现页面数据懒加载
2020/02/13 Javascript
全面了解python字符串和字典
2016/07/07 Python
Python3爬虫使用Fidder实现APP爬取示例
2018/11/27 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
Python中正则表达式对单个字符,多个字符和匹配边界等使用
2021/01/27 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
.NET现在共支持多少种语言
2014/02/26 面试题
事业单位接收函
2014/01/10 职场文书
国培计划培训感言
2014/03/11 职场文书
小学运动会报道稿
2014/10/04 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
文明单位创建材料
2014/12/24 职场文书
2015大学生求职信范文
2015/03/20 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技