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之编写类之二方法
Oct 11 Python
21行Python代码实现拼写检查器
Jan 25 Python
python利用微信公众号实现报警功能
Jun 10 Python
python中的for循环
Sep 28 Python
python调用staf自动化框架的方法
Dec 26 Python
Python学习笔记之抓取某只基金历史净值数据实战案例
Jun 03 Python
Python基础学习之函数方法实例详解
Jun 18 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
python按键按住不放持续响应的实例代码
Jul 17 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 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开发工具ZendStudio下Xdebug工具使用说明详解
2013/11/11 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
?牟┛途W扣了一??效果出?? target=
2007/05/27 Javascript
use jscript List Installed Software
2007/06/11 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
javascript 写类方式之五
2009/07/05 Javascript
ajax更新数据后,jquery、jq失效问题
2011/03/16 Javascript
JavaScript面向对象编程入门教程
2014/04/16 Javascript
跟我学Nodejs(一)--- Node.js简介及安装开发环境
2014/05/20 NodeJs
javascript实现捕捉键盘上按下的键
2015/05/05 Javascript
浅析JS操作DOM的一些常用方法
2016/05/13 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
JavaScript  event对象整理及详细介绍
2016/10/10 Javascript
Angularjs 手写日历的实现代码(不用插件)
2017/10/18 Javascript
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
Python简单生成8位随机密码的方法
2017/05/24 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
2018/10/11 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
深入探究HTML5的History API
2015/07/09 HTML / CSS
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
结对共建协议书
2014/08/20 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
父母教会我观后感
2015/06/17 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
上个世纪50年代的可穿戴技术:无线电帽子
2022/02/18 无线电
Win11开始菜单添加休眠选项
2022/04/19 数码科技
Python开发五子棋小游戏
2022/05/02 Python