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代码检查工具pylint 让你的python更规范
Sep 05 Python
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
Mar 21 Python
Python实现检测文件MD5值的方法示例
Apr 11 Python
多个应用共存的Django配置方法
May 30 Python
pycharm: 恢复(reset) 误删文件的方法
Oct 22 Python
python协程之动态添加任务的方法
Feb 19 Python
python3注册全局热键的实现
Mar 22 Python
自学python用什么系统好
Jun 23 Python
Matplotlib中%matplotlib inline如何使用
Jul 28 Python
Python 实现简单的客户端认证
Jul 29 Python
python数字图像处理:图像的绘制
Jun 28 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使用者状态管理功能的应用
2006/10/09 PHP
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
php 截取字符串并以零补齐str_pad() 函数
2011/05/07 PHP
linux中cd命令使用详解
2015/01/08 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
js判断浏览器的比较全的代码
2007/02/13 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
javascript模拟map输出与去除重复项的方法
2015/02/09 Javascript
介绍JavaScript中Math.abs()方法的使用
2015/06/14 Javascript
Jquery组件easyUi实现表单验证示例
2016/08/23 Javascript
Javascript实现代码折叠功能
2016/08/25 Javascript
js控制文本框禁止输入特殊字符详解
2017/04/07 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
webpack多入口文件页面打包配置详解
2018/01/09 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
如何从0开始用node写一个自己的命令行程序
2018/12/29 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
python opencv实现图片旋转矩形分割
2018/07/26 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
基于python检查矩阵计算结果
2020/05/21 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
What is EJB
2016/07/22 面试题
员工升职自荐信
2015/03/27 职场文书
盗窃案辩护词
2015/05/21 职场文书
同事去世追悼词
2015/06/23 职场文书
工作会议简报
2015/07/20 职场文书
解决numpy和torch数据类型转化的问题
2021/05/23 Python