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构建Hopfield网络的教程
Apr 14 Python
为Python的web框架编写前端模版的教程
Apr 30 Python
python使用生成器实现可迭代对象
Mar 20 Python
PyQt5每天必学之关闭窗口
Apr 19 Python
python实现log日志的示例代码
Apr 28 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
python使用writerows写csv文件产生多余空行的处理方法
Aug 01 Python
Python Request爬取seo.chinaz.com百度权重网站的查询结果过程解析
Aug 13 Python
Python统计分析模块statistics用法示例
Sep 06 Python
Python如何合并多个字典或映射
Jul 24 Python
python 动态绘制爱心的示例
Sep 27 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 如何向 MySQL 发送数据
2006/10/09 PHP
PHP Mysql编程之高级技巧
2008/08/27 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
PHP 字符串分割和比较
2009/10/06 PHP
PHP反射基础知识回顾
2020/09/10 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
jQuery通过写入cookie实现更换网页背景的方法
2016/04/15 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
2016/08/26 Javascript
SelecT下拉框选中和取值的解决方法
2016/11/22 Javascript
bootstrap学习使用(导航条、下拉菜单、轮播、栅格布局等)
2016/12/01 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
2019/05/02 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
2019年分享net面试的经历和题目
2016/08/07 面试题
新媒传信软件测试面试题
2013/02/24 面试题
经典的班主任推荐信
2013/10/28 职场文书
旅游管理毕业生自荐信
2013/11/05 职场文书
初中体育教学反思
2014/01/14 职场文书
现场施工员岗位职责
2014/03/10 职场文书
服务之星事迹材料
2014/05/03 职场文书
求职简历自荐信
2014/06/18 职场文书
实验心得体会
2014/09/05 职场文书
手把手教你制定暑期学习计划,让你度过充实的暑假
2019/08/22 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL