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 DataFrame获取行数、列数、索引及第几行第几列的值方法
Apr 08 Python
python 编码规范整理
May 05 Python
Python模块、包(Package)概念与用法分析
May 31 Python
python issubclass 和 isinstance函数
Jul 25 Python
python实现简易学生信息管理系统
Apr 05 Python
Python操作SQLite/MySQL/LMDB数据库的方法
Nov 07 Python
python实现高斯投影正反算方式
Jan 17 Python
浅谈tensorflow中张量的提取值和赋值
Jan 19 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
Python如何测试stdout输出
Aug 10 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
Dec 11 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实现的双色球算法示例
2017/06/20 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
2020/08/11 PHP
使用TextRange获取输入框中光标的位置的代码
2007/03/08 Javascript
JavaScript实现多维数组的方法
2013/11/20 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
详解Sea.js中Module.exports和exports的区别
2017/02/12 Javascript
Vue.js实现一个漂亮、灵活、可复用的提示组件示例
2017/03/17 Javascript
Vue.js中兄弟组件之间互相传值实例
2017/06/01 Javascript
react-native之ART绘图方法详解
2017/08/08 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
layer弹出层父子页面事件相互调用方法
2018/08/17 Javascript
微信小程序chooseImage的用法(从本地相册选择图片或使用相机拍照)
2018/08/22 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
python实现博客文章爬虫示例
2014/02/26 Python
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
2016/01/20 Python
详解Python之unittest单元测试代码
2018/01/24 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
pycharm中显示CSS提示的知识点总结
2019/07/29 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
Python生成器常见问题及解决方案
2020/03/21 Python
商铺租房协议书范本
2014/12/04 职场文书
五一劳动节活动总结
2015/02/09 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
5人制售《绝地求生》游戏外挂获利500多万元 被判刑
2022/03/31 其他游戏
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang
Window server 2012 R2 AD域的组策略相关设置
2022/04/28 Servers
Python first-order-model实现让照片动起来
2022/06/25 Python