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程序与系统shell交互的方式
Apr 09 Python
Opencv-Python图像透视变换cv2.warpPerspective的示例
Apr 11 Python
深入浅析Python中的迭代器
Jun 04 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
pandas 对日期类型数据的处理方法详解
Aug 08 Python
使用python求解二次规划的问题
Feb 29 Python
VSCode配合pipenv搞定虚拟环境的实现方法
May 17 Python
python 数据分析实现长宽格式的转换
May 18 Python
Python正则表达式如何匹配中文
May 27 Python
python cv2.resize函数high和width注意事项说明
Jul 05 Python
Python如何输出百分比
Jul 31 Python
python/golang 删除链表中的元素
Sep 14 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笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
js的event详解。
2006/09/06 Javascript
jQuery Selector选择器小结
2010/05/06 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
jQuery实现仿美橙互联两级导航菜单的方法
2015/03/09 Javascript
JavaScript实现时间倒计时跳转(推荐)
2016/06/28 Javascript
AngularJS实现网站换肤实例
2021/02/19 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python实现石头剪刀布小游戏
2021/01/20 Python
python write无法写入文件的解决方法
2019/01/23 Python
Python Flask框架模板操作实例分析
2019/05/03 Python
pytorch实现查看当前学习率
2020/06/24 Python
HTML+CSS3模拟心的跳动实例代码
2017/09/05 HTML / CSS
英国时尚家具、家居饰品及礼品商店:Graham & Green
2016/09/15 全球购物
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
质检的岗位职责
2013/11/17 职场文书
物流管理专业应届生求职信
2013/11/21 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
局机关干部群众路线个人对照检查材料思想汇报
2014/10/05 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
2015年党小组工作总结
2015/05/26 职场文书
安全生产奖惩制度
2015/08/06 职场文书
MySQL查看表和清空表的常用命令总结
2021/05/26 MySQL
python内置进制转换函数的操作
2021/06/02 Python
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL