python实现字符串连接的三种方法及其效率、适用场景详解


Posted in Python onJanuary 13, 2017

python字符串连接的方法,一般有以下三种:

方法1:直接通过加号(+)操作符连接

website = 'python' + 'tab' + '.com'

方法2:join方法 

listStr = ['python', 'tab', '.com'] 
website = ''.join(listStr)

方法3:替换 

website = '%s%s%s' % ('python', 'tab', '.com')

下面再来说一下三种方法的不同

方法1,使用简单直接,但是网上不少人说这种方法效率低

之所以说python 中使用 + 进行字符串连接的操作效率低下,是因为python中字符串是不可变的类型,使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了

方法2,使用略复杂,但对多个字符进行连接时效率高,只会有一次内存的申请。而且如果是对list的字符进行连接的时候,这种方法必须是首选

方法3:字符串格式化,这种方法非常常用,本人也推荐使用该方法

下面用实验来说明字符串连接的效率问题。

比较对象:加号连接 VS join连接

python版本: python2.7

系统环境:CentOS 

实验一:

# -*- coding: utf-8 -*-

from time import time

def method1():

  t = time()

  for i in xrange(100000):

    s = 'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'+'pythontab'

  print time() - t

def method2():

  t = time()

  for i in xrange(100000):

    s = ''.join(['pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab','pythontab'])

  print time() -t

method1()

method2()

 结果:

0.641695976257

0.341440916061

实验二:

# -*- coding: utf-8 -*-

from time import time

def method1():

  t = time()

  for i in xrange(100000):

    s = 'pythontab'+'pythontab'+'pythontab'+'pythontab'

  print time() - t

def method2():

  t = time()

  for i in xrange(100000):

    s = ''.join(['pythontab','pythontab','pythontab','pythontab'])

  print time() -t

method1()

method2()

 结果:

0.0265691280365

0.0522091388702

上面两个实验出现了完全不同的结果,分析这两个实验唯一不同的是:字符串连接个数。

结论:加号连接效率低是在连续进行多个字符串连接的时候出现的,如果连接的个数较少,加号连接效率反而比join连接效率高

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python插入排序算法的实现代码
Nov 21 Python
Python实现的一个简单LRU cache
Sep 26 Python
用Python实现服务器中只重载被修改的进程的方法
Apr 30 Python
在Django中管理Users和Permissions以及Groups的方法
Jul 23 Python
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
Sep 21 Python
Django REST为文件属性输出完整URL的方法
Dec 18 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
浅析PyTorch中nn.Linear的使用
Aug 18 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
pytorch三层全连接层实现手写字母识别方式
Jan 14 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
python实现读取并显示图片的两种方法
Jan 13 #Python
Python中的连接符(+、+=)示例详解
Jan 13 #Python
Python中datetime模块参考手册
Jan 13 #Python
python 计算文件的md5值实例
Jan 13 #Python
Python 字典与字符串的互转实例
Jan 13 #Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 #Python
Python 使用os.remove删除文件夹时报错的解决方法
Jan 13 #Python
You might like
php获取英文姓名首字母的方法
2015/07/13 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
浅谈关于PHP解决图片无损压缩的问题
2017/09/01 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
jQuery Ajax请求状态管理器打包
2012/05/03 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
Jquery异步提交表单代码分享
2015/03/26 Javascript
javascript仿京东导航左侧分类导航下拉菜单效果
2020/11/25 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
AngularJS入门教程之Scope(作用域)
2016/07/27 Javascript
Js遍历键值对形式对象或Map形式的方法
2016/08/08 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
JavaScript 中Date对象的格式化代码方法汇总
2017/09/06 Javascript
js最实用string(字符串)类型的使用及截取与拼接详解
2019/04/26 Javascript
layer提示框添加多个按钮选择的实例
2019/09/12 Javascript
[06:50]DSPL次级职业联赛十强晋级之路
2014/11/18 DOTA
python 2.7.14安装图文教程
2018/04/08 Python
PyQt5每天必学之像素图控件QPixmap
2018/04/19 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
Python实现字符串匹配的KMP算法
2019/04/04 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
HTML5中Localstorage的使用教程
2015/07/09 HTML / CSS
英国领先的餐饮折扣俱乐部:Gourmet Society
2020/07/26 全球购物
房地产开发计划书
2014/01/10 职场文书
工商管理本科生求职信
2014/07/13 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
社区节水倡议书
2015/04/29 职场文书
村官2015年度工作总结
2015/10/14 职场文书
Go标准容器之Ring的使用说明
2021/05/05 Golang
python机器学习创建基于规则聊天机器人过程示例详解
2021/11/02 Python
搭建Yolov5服务器
2022/04/30 Servers