[转]python 中的字符串连接
python 中可使用 + 进行字符串的连接操作
但很多文档里都说,python 使用 + 进行字符串连接的效率低下
这直接导致本人在代码中不敢使用 + 进行字符串的连接操作
可事实又是怎样呢?
之所以说python 中使用 + 进行字符串连接的操作效率低下,是因为python中字符串是不可变的类型,使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了
对于这种连加操作可以用列表实现:Str = ''.jon(a,b,c,d,e,f,...) 以提高效率,这样只会有一次内存的申请
其实在实际应用中需要使用字符串连续相加是很少的,更多的操作是几个字符串的连接,当有这样的需求时,使用 + 操作符其实是最快的方式
本人同样也尝试过使用 tList.append(i),最后再 ''.join(tList),但经实际代码对比,还是 + 操作效率更高
下面给出测试代码:
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- import os,sys
- import time
- MAX = 9000000
- char_list = [ chr((i % 26) +97) for i in xrange(MAX) ]
- my_str=''
- last_time = time.time()
- for i in char_list:
- my_str = my_str + i
- print time.time() - last_time
- print '-' * 80
- my_str=''
- t_list=[]
- last_time = time.time()
- for i in char_list:
- t_list.append(i)
- my_str = ''.join(t_list)
- print time.time() - last_time
- print '-' * 80
运行结果:
2.13897681236 -------------------------------------------------------------------------------- 2.35726714134 --------------------------------------------------------------------------------
下面是一个连加操作时 字符串+ 与列表 join的效率对比(代码来自:http://www.douban.com/group/topic/12795262/ 的一则回贴):
- from time import time
- def lz():
- t = time()
- for i in xrange(10000):
- s = '兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'
- +'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰
- 州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+
- '兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰>
- 州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'+'兰州'
- print time() - t
- def v5():
- t = time()
- for i in xrange(10000):
- s = ''.join(['威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威>
- 武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武',
- '威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威>
- 武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武','威武',
- '威武','威武','威武','威武','威武','威武','威武','威武','威武'])
- print time() -t
- lz() is v5()
运行结果:
0.111644983292 0.0529618263245
转载于:https://www.cnblogs.com/study-development/p/3633743.html
[转]python 中的字符串连接相关推荐
- Python 中,字符串连接效率最高的方式是?一定出乎你的意料
网上很多文章人云亦云,字符串连接应该使用「join」方法而不要用「+」操作.说前者效率更高,它以更少的代价创建新字符串,如果用「+」连接多个字符串,每连接一次,就要为字符串分配一次内存,效率显得有点低 ...
- python字符串去掉空行_从python中的字符串中删除空格
python字符串去掉空行 如何在python中删除字符串中的空格 (How to remove whitespaces in a string in python) str.lstrip()str. ...
- Python 中的字符串,是门大学问。
公众号后台回复"图书",了解更多号主新书内容 作者:Rocky0429 来源:Python空间 上一篇文章中讲了 Python 数据类型中的数字类型,这篇文章轮到数据类型中另一重磅 ...
- python中的字符串是什么数据类型_Python数据类型之字符串
一:概述 Python中的字符串的一些概念 可以看作是字符的集合,在数据类型里没有单个字符的数据类型,可以用单个字符表示的一个字符串数据类型 字符串是一种不可变的序列类型,单个字符从左到右按照顺序排列 ...
- 超详细的Python中的字符串常识【赶紧收藏】
今天我们说说字符串类型,涉及很多基础知识,不过字符串还是需要在多讲讲的. 回顾一下:字符串与长字符串 Python非常简单,并没有专门分出一个char(Character)类型(搞过C/Java的同学 ...
- 如何在Python中获取字符串的子字符串?
有没有一种方法可以在Python中为字符串加上字符串,以从第三个字符到字符串的末尾获取新的字符串? 也许像myString[2:end] ? 如果离开第二部分意味着"直到最后",而 ...
- python写错了怎么更改-Python中修改字符串的四种方法
在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符. 因此改变一个字符串的元素需要新建一个新的字符串. 常见的修改方法有以下4种. 方法1:将字符串转换成列表后修改值,然后用joi ...
- python中定义字符串_python中的字符串
python中的字符串一旦定义,则不可以修改 python中的原始字符串 即 在字符串前面加小写字母r 比如:打印输出C:\Program Files\Microsoft Games python中的 ...
- python字符计数怎样去除空格_去除python中的字符串空格的简单方法
python编程中,我们在修改代码,遇到空格很多的情况下,我们要删除空格.本文小编整理了三种字符串去除空格的方法: 方法一:使用字符串函数replace,去除全部空格. 实例: >>> ...
最新文章
- 面试热点Redis分布式锁,再细说一次
- 谈谈 Java 中自定义注解及使用场景
- Confluence 6 那些文件需要备份
- TCL中关于Pins的一些使用方法?
- docker 容器重命名
- QSharedMemory共享内存实现进程间通讯(IPC)及禁止程序多开
- 详解停车位检测算法 Vision-Based Parking-Slot Detection: A DCNN-Based Approach and a Large-Scale Benchmark
- 《我也能做CTO之程序员职业规划》推荐序
- mysql int 转 varchar_Java后端程序员必备:MySQL索引失效的十大杂症
- 支持向量机原理(四)SMO算法原理
- I.MongoDB Features and Installation(Mongodb安装和介绍)
- JavaSE、JavaEE、JavaME三者的关系与区别
- git源码安装后报错:bash: /usr/bin/git: No such file or directory
- 大学学python用记笔记吗_Python 应该怎么学?
- stm32 bootloader启动正常,APP程序会在时钟配置出错原因分析
- 扒一扒“WEBP格式”的图片
- FreeRTOS学习笔记——FreeRTOS 时间管理
- Apache网页优化(网页压缩、网页缓存、隐藏版本、配置防盗链)
- 2022 开源之夏 | Serverless Devs 陪你“变得更强”
- docker部署环境
热门文章
- 分布式资本沈波:未来区块链杀手级应用将出现在“+区块链”
- 自己简单封装的自己项目需要的http请求
- PHP_Smarty
- Struts2、SpringMVC、Servlet(Jsp)性能对比 测试 。 Servlet的性能应该是最好的,可以做为参考基准,其它测试都要向它看齐,参照...
- Tomcat - Maven plugin: 运行找不到webapp
- 基于环信sdk的陌生人交友php服务器代码开源
- xhost和XServer相关概念汇总
- XMPP文件传输(XEP-0096协议说明)
- 《大话存储__网络存储系原理精解与最佳实践》电子书下载
- 验证软件需求正确性的四个角度