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系列之数据处理编程实例(一)
May 22 Python
Python装饰器decorator用法实例
Nov 10 Python
在Python中处理字符串之isdigit()方法的使用
May 18 Python
详解python3实现的web端json通信协议
Dec 29 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
利用Python如何批量修改数据库执行Sql文件
Jul 29 Python
python启动应用程序和终止应用程序的方法
Jun 28 Python
Python批量将图片灰度化的实现代码
Apr 11 Python
Jupyter Notebook折叠输出的内容实例
Apr 22 Python
python 绘制场景热力图的示例
Sep 23 Python
Pytorch distributed 多卡并行载入模型操作
Jun 05 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写入数据到CSV文件的方法
2015/03/14 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
拖动一个HTML元素
2006/12/22 Javascript
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
jQuery 处理表单元素的代码
2010/02/15 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
JavaScript字符串对象slice方法入门实例(用于字符串截取)
2014/10/16 Javascript
JSON相关知识汇总
2015/07/03 Javascript
Javascript中for循环语句的几种写法总结对比
2017/01/23 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
JavaScript求一组数的最小公倍数和最大公约数常用算法详解【面向对象,回归迭代和循环】
2018/05/07 Javascript
javascript运行机制之执行顺序理解
2020/08/03 Javascript
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
python的exec、eval使用分析
2017/12/11 Python
python内存管理机制原理详解
2019/08/12 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
2020/02/25 Python
Centos7下源码安装Python3 及shell 脚本自动安装Python3的教程
2020/03/07 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
Python中如何添加自定义模块
2020/06/09 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
意大利高端时尚买手店:Stefania Mode
2018/03/01 全球购物
护士演讲稿优秀范文
2014/04/30 职场文书
六一儿童节演讲稿
2014/05/23 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
小学新教师个人总结
2015/02/05 职场文书
父亲节活动总结
2015/02/12 职场文书
Mysql基础之常见函数
2021/04/22 MySQL