python字符串通接的三种要领及其效率、合用场景详解
当前位置:以往代写 > Python教程 >python字符串通接的三种要领及其效率、合用场景详解
2019-06-14

python字符串通接的三种要领及其效率、合用场景详解

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毗连效率高

    关键字:

在线提交作业