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生成随机数的方法
Jan 14 Python
从零学Python之hello world
May 21 Python
基于python编写的微博应用
Oct 17 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
Python循环语句之break与continue的用法
Oct 14 Python
python高手之路python处理excel文件(方法汇总)
Jan 07 Python
sublime python3 输入换行不结束的方法
Apr 19 Python
python批量处理文件或文件夹
Jul 28 Python
python numpy数组复制使用实例解析
Jan 10 Python
关于tf.reverse_sequence()简述
Jan 20 Python
Python检测端口IP字符串是否合法
Jun 05 Python
python空元组在all中返回结果详解
Dec 15 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
Access数据库导入Mysql的方法之一
2006/10/09 PHP
php根据用户名和手机号查询是否存在手机号码
2017/02/16 PHP
PHP使用Nginx实现反向代理
2017/09/20 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
PHP设计模式之原型模式定义与用法详解
2018/04/03 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
javascript 写类方式之三
2009/07/05 Javascript
理解 JavaScript 预解析
2009/10/25 Javascript
Web表单提交之disabled问题js解决方法
2015/01/13 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
node+koa2+mysql+bootstrap搭建一个前端论坛
2018/05/06 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
2019/03/07 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
JS实现骰子3D旋转效果
2019/10/24 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
vue 使用 canvas 实现手写电子签名
2020/03/06 Javascript
[03:54]DOTA2英雄梦之声_第06期_昆卡
2014/06/23 DOTA
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
Python中让MySQL查询结果返回字典类型的方法
2014/08/22 Python
python中dir函数用法分析
2015/04/17 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
python 类详解及简单实例
2017/03/24 Python
tensorflow: 查看 tensor详细数值方法
2018/06/13 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
python正则表达式之对号入座篇
2018/07/24 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
python TCP包注入方式
2020/05/05 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
喝酒驾驶检讨书
2014/10/01 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
德劲DE1102数字调谐收音机机评
2022/04/07 无线电
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js