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开发之thread实现布朗运动的方法
Nov 11 Python
利用python实现数据分析
Jan 11 Python
django2+uwsgi+nginx上线部署到服务器Ubuntu16.04
Jun 26 Python
python实现求特征选择的信息增益
Dec 18 Python
python实现简单flappy bird
Dec 24 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 Python
python实现桌面托盘气泡提示
Jul 29 Python
Python tensorflow实现mnist手写数字识别示例【非卷积与卷积实现】
Dec 19 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
python随机模块random使用方法详解
Feb 14 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
如何用Python搭建gRPC服务
Jun 30 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
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
javascript new一个对象的实质
2010/01/07 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
JavaScript实现点击文字切换登录窗口的方法
2015/05/11 Javascript
12306 刷票脚本及稳固刷票脚本(防挂)
2017/01/04 Javascript
移动端刮刮乐的实现方式(js+HTML5)
2017/03/23 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
js实现随机抽奖
2020/03/19 Javascript
python list转dict示例分享
2014/01/28 Python
Python中用Decorator来简化元编程的教程
2015/04/13 Python
Python中的getopt函数使用详解
2015/07/28 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
Python处理mysql特殊字符的问题
2020/03/02 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
既然说Ruby中一切都是对象,那么Ruby中类也是对象吗
2013/01/26 面试题
简历自我评价模版
2014/01/31 职场文书
物流创业计划书
2014/02/01 职场文书
学校党的群众路线教育实践活动总结报告
2014/07/03 职场文书
年度安全生产目标责任书
2014/07/23 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
检举信的写法
2019/04/10 职场文书
2019年员工旷工保证书!
2019/06/28 职场文书
mysql 8.0.24版本安装配置方法图文教程
2021/05/12 MySQL
SpringMVC 整合SSM框架详解
2021/08/30 Java/Android
css样式important规则的正确使用方式
2022/06/10 HTML / CSS
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技