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信息抽取之乱码解决办法
Jun 29 Python
用TensorFlow实现戴明回归算法的示例
May 02 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
python中通过selenium简单操作及元素定位知识点总结
Sep 10 Python
使用Python的turtle模块画国旗
Sep 24 Python
Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例
Mar 18 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Python sklearn中的.fit与.predict的用法说明
Jun 28 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 Python
Python根据字典的值查询出对应的键的方法
Sep 30 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 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
PHP从零开始打造自己的MVC框架之类的自动加载实现方法详解
2019/06/03 PHP
[原创]静态页面也可以实现预览 列表不同的显示方式
2006/10/14 Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
js 关于=+与+=日期函数使用说明(赋值运算符)
2011/11/15 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
把文本中的URL地址转换为可点击链接的JavaScript、PHP自定义函数
2014/07/29 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
JavaScript常用判断写法大全(推荐)
2016/05/30 Javascript
ES6中Proxy代理用法实例浅析
2017/04/06 Javascript
Angular2学习教程之ng中变更检测问题详解
2017/05/28 Javascript
解决低版本的浏览器不支持es6的import问题
2018/03/09 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
Python的组合模式与责任链模式编程示例
2016/02/02 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
Python异常处理操作实例详解
2018/05/10 Python
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
解决Keras 中加入lambda层无法正常载入模型问题
2020/06/16 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
2021/01/05 Python
程序设计HTML5 Canvas API
2013/04/08 HTML / CSS
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
统计每一学生的平均成绩
2014/06/06 面试题
就业推荐表自我鉴定
2014/03/21 职场文书
商业项目策划方案
2014/06/05 职场文书
在校实习生求职信
2014/06/18 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
食品质检员岗位职责
2015/04/08 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
创业计划书之游泳馆
2019/09/16 职场文书