python字符串通接的三种要领及其效率、合用场景详解
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毗连效率高