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 字符串split的用法分享
Mar 23 Python
Python time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
浅谈Python程序与C++程序的联合使用
Apr 07 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
Dec 31 Python
详谈python中冒号与逗号的区别
Apr 18 Python
python导入模块交叉引用的方法
Jan 19 Python
python实现扫描ip地址的小程序
Apr 16 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
tensorflow 实现数据类型转换
Feb 17 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
Feb 26 Python
使用python-Jenkins批量创建及修改jobs操作
May 12 Python
python双向链表实例详解
May 25 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
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
2007/01/15 PHP
php5数字型字符串加解密代码
2008/04/24 PHP
PHP 批量更新网页内容实现代码
2010/01/05 PHP
php入门之连接mysql数据库的一个类
2012/04/21 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
Javascript 加载和执行-性能提高篇
2012/12/28 Javascript
获取表单控件原始(初始)值的方法
2013/08/21 Javascript
js 立即调用的函数表达式如何写
2014/01/12 Javascript
js 获取页面高度和宽度兼容 ie firefox chrome等
2014/05/14 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
2016/10/24 Javascript
js继承实现方法详解
2016/12/16 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
JavaScript中利用Array filter() 方法压缩稀疏数组
2018/02/24 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
python数据结构之图的实现方法
2015/07/08 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
python 每天如何定时启动爬虫任务(实现方法分享)
2018/05/21 Python
python 给DataFrame增加index行名和columns列名的实现方法
2018/06/08 Python
python多进程间通信代码实例
2019/09/30 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
2020/10/19 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
急诊科护士自我鉴定
2013/10/14 职场文书
自我鉴定标准格式
2014/03/19 职场文书
人力资源本科毕业生求职信
2014/06/04 职场文书
学生顶撞老师的检讨书
2014/09/17 职场文书
药店收银员岗位职责
2015/04/07 职场文书
nginx之内存池的实现
2022/06/28 Servers