欢迎各位兄弟 发布技术文章
这里的技术是共享的
a = 'adsf' b = 'BDSD' print a+b print '%s%s'%(a,b) print ''.join([a,b]) 来自 https://zhidao.baidu.com/question/493047120.html
python字符串连接的方法,一般有以下三种:方法1:直接通过加号(+)操作符连接website=& 39;python& 39;+& 39;tab& 39;+& 39; com& 39;方法2
python字符串连接的方法,一般有以下三种:
1 | website = 'python' + 'tab' + '.com' |
1 2 | listStr = [ 'python' , 'tab' , '.com' ] website = ''.join(listStr) |
1 | website = '%s%s%s' % ( 'python' , 'tab' , '.com' ) |
方法1,使用简单直接,但是网上不少人说这种方法效率低
之所以说python 中使用 + 进行字符串连接的操作效率低下,是因为python中字符串是不可变的类型,使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了
方法2,使用略复杂,但对多个字符进行连接时效率高,只会有一次内存的申请。而且如果是对list的字符进行连接的时候,这种方法必须是首选
方法3:字符串格式化,这种方法非常常用,本人也推荐使用该方法
1 2 3 | 比较对象:加号连接 VS join 连接 python版本: python2.7 系统环境:CentOS |
实验一:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # -*- 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() |
结果:
1 2 | 0.641695976257 0.341440916061 |
实验二:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # -*- 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() |
结果:
1 2 | 0.0265691280365 0.0522091388702 |
上面两个实验出现了完全不同的结果,分析这两个实验唯一不同的是:字符串连接个数。
结论:加号连接效率低是在连续进行多个字符串连接的时候出现的,如果连接的个数较少,加号连接效率反而比join连接效率高
版权声明:本文为博主原创文章,未经博主允许不得转载。
Python 中可使用 + 进行字符串的连接操作
但很多文档里都说,python 使用 + 进行字符串连接的效率低下
这直接导致本人在代码中不敢使用 + 进行字符串的连接操作
可事实又是怎样呢?
之所以说python 中使用 + 进行字符串连接的操作效率低下,是因为python中字符串是不可变的类型,使用 + 连接两个字符串时会生成一个新的字符串,生成新的字符串就需要重新申请内存,当连续相加的字符串很多时(a+b+c+d+e+f+...) ,效率低下就是必然的了
对于这种连加操作可以用列表实现:Str = ''.jon(a,b,c,d,e,f,...) 以提高效率,这样只会有一次内存的申请
其实在实际应用中需要使用字符串连续相加是很少的,更多的操作是几个字符串的连接,当有这样的需求时,使用 + 操作符其实是最快的方式
本人同样也尝试过使用 tList.append(i),最后再 ''.join(tList),但经实际代码对比,还是 + 操作效率更高
下面给出测试代码:
运行结果:
2.13897681236
--------------------------------------------------------------------------------
2.35726714134
--------------------------------------------------------------------------------
下面是一个连加操作时 字符串+ 与列表 join的效率对比(代码来自:http://www.douban.com/group/topic/12795262/ 的一则回贴):
运行结果:
0.111644983292
0.0529618263245
来自 http://blog.csdn.net/jxfgh/article/details/6969184/
我们通过操作符号+来进行字符串的相加,不过建议还是用其他的方式来进行字符串的拼接,这样效率高点。
原因:在循环连接字符串的时候,他每次连接一次,就要重新开辟空间,然后把字符串连接起来,再放入新的空间,再一次循环,又要开辟新的空间,把字符串连接起来放入新的空间,如此反复,内存操作比较频繁,每次都要计算内存空间,然后开辟内存空间,再释放内存空间,效率非常低。