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在windows下实现备份程序实例
Jul 04 Python
使用Python对MySQL数据操作
Apr 06 Python
基于python的Tkinter编写登陆注册界面
Jun 30 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
Apr 20 Python
OpenCV+python手势识别框架和实例讲解
Aug 03 Python
Python实现的特征提取操作示例
Dec 03 Python
windows下搭建python scrapy爬虫框架步骤
Dec 23 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
TensorFlow2.0矩阵与向量的加减乘实例
Feb 07 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
python 已知平行四边形三个点,求第四个点的案例
Apr 12 Python
Python是什么 Python的用处
May 26 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
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
注册页面之前先验证用户名是否存在的php代码
2012/07/14 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
2016/04/07 PHP
PHP Yaf框架的简单安装使用教程(推荐)
2016/06/08 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
简述AngularJS相关的一些编程思想
2015/06/23 Javascript
快速搭建React的环境步骤详解
2017/11/06 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
使用JS获取页面上的所有标签
2018/10/18 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
2018/12/03 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
一些可能会用到的Node.js面试题
2019/06/15 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
Python实现快速计算词频功能示例
2018/06/25 Python
python3.6使用pickle序列化class的方法
2018/10/22 Python
python实现串口自动触发工作的示例
2019/07/02 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
纯css3实现效果超级炫的checkbox复选框和radio单选框
2014/09/01 HTML / CSS
百联网上商城:i百联
2017/01/28 全球购物
全球第二大家装零售商:Lowe’s
2018/01/13 全球购物
介绍一下UNIX启动过程
2013/11/14 面试题
工程项目经理任命书
2014/06/05 职场文书
教师个人成长总结
2015/02/11 职场文书
小学教学工作总结2015
2015/05/13 职场文书
小学一年级语文教学反思
2016/03/03 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
Python实现简繁体转换
2021/06/07 Python
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技