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中for循环下的索引变量的作用域
Apr 15 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
python 多线程中子线程和主线程相互通信方法
Nov 09 Python
python爬虫获取新浪新闻教学
Dec 23 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
python实现简单日期工具类
Apr 24 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
如何基于Python实现数字类型转换
Feb 07 Python
Python基于codecs模块实现文件读写案例解析
May 11 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
python实现数字炸弹游戏
Jul 17 Python
python语言实现贪吃蛇游戏
Nov 13 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
索尼SONY ICF-SW7600GR电路分析与改良
2021/03/02 无线电
php入门之连接mysql数据库的一个类
2012/04/21 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
jQuery 使用手册(一)
2009/09/23 Javascript
javascript 二分法(数组array)
2010/04/24 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
javascript中window.open在原来的窗口中打开新的窗口(不同名)
2015/11/15 Javascript
javascript Slip.js实现整屏滑动的手机网页
2015/11/25 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
nodejs如何获取时间戳与时间差
2016/08/03 NodeJs
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
微信公众平台 发送模板消息(Java接口开发)
2019/04/17 Javascript
vue使用canvas实现移动端手写签名
2020/09/22 Javascript
关于Python中异常(Exception)的汇总
2017/01/18 Python
Python实现的凯撒密码算法示例
2018/04/12 Python
python实现超市扫码仪计费
2018/05/30 Python
pygame实现五子棋游戏
2019/10/29 Python
Python遍历字典方式就实例详解
2019/12/28 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
HearthSong官网:儿童户外玩具、儿童益智玩具
2017/10/16 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
工程造价专业大学生自荐信
2013/10/01 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
采购求职信
2014/03/17 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
停电放假通知
2015/04/14 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书