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 fabric实现远程操作和部署示例
Mar 25 Python
Python实现对比不同字体中的同一字符的显示效果
Apr 23 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
python访问抓取网页常用命令总结
Apr 11 Python
分享一个简单的python读写文件脚本
Nov 25 Python
Go/Python/Erlang编程语言对比分析及示例代码
Apr 23 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
Python 转换文本编码实现解析
Aug 27 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
Python使用random模块实现掷骰子游戏的示例代码
Apr 29 Python
python游戏开发Pygame框架
Apr 22 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
建站常用13种PHP开源CMS比较
2009/08/23 PHP
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
类似框架的js代码
2006/11/09 Javascript
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
Extjs学习笔记之六 面版
2010/01/08 Javascript
input的focus方法使用
2010/03/13 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
2016/03/29 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
Node.js v8.0.0正式发布!看看带来了哪些主要新特性
2017/06/02 Javascript
javascript 中事件冒泡和事件捕获机制的详解
2017/09/01 Javascript
优雅的使用javascript递归画一棵结构树示例代码
2019/09/22 Javascript
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
python的range和linspace使用详解
2019/11/27 Python
python将图片转base64,实现前端显示
2020/01/09 Python
python对文件的操作方法汇总
2020/02/28 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
web页面录屏实现
2019/02/12 HTML / CSS
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
乌克兰在线商店的价格比较:Price.ua
2019/07/26 全球购物
如何设置Java的运行环境
2013/04/05 面试题
新文化运动的口号
2014/06/21 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
公务员考察材料
2014/12/23 职场文书
2015年银行员工工作总结
2015/04/24 职场文书
地道战观后感400字
2015/06/04 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
python-opencv 中值滤波{cv2.medianBlur(src, ksize)}的用法
2021/06/05 Python
python 进阶学习之python装饰器小结
2021/09/04 Python