1. 程式人生 > >python-字串的join要比+操作效率高

python-字串的join要比+操作效率高

程式碼

#-*- coding: utf-8 -*-
from time import time
def plus_test():
    t = time()
    s = ''
    for i in xrange(1000000):
        s += 'test'
    print(time() - t)
def join_test():
    t = time()
    li = []
    for i in xrange(1000000):
        li.append('test')
    s = ''.join(li)
    print(time() - t)

plus_test()
join_test()

資料

函式 執行時間
plus_test() 1.06100010872
join_test() 0.110999822617

原因

字串物件是不可改變的,也就是說在python建立一個字串後,你不能把這個字元中的某一部分改變。任何上面的函式改變了字串後,都會返回一個新的字串,原字串並沒有變。

所以上面的例子中,任何對字串的操作包括’+’操作符都將建立一個新的字串物件,而不是改變原來的物件.因此N個字串相加必將丟棄中間N-1個結果,而列表不同,列表是可以改變的,因此前面使用list的append,再使用join還原成字串,只內建了一次,節省了很多資源和時間。

字串不可改變的現象其實這也是有變通的辦法的,可以用S=list(S)這個函式把S變為由單個字元為成員的list,這樣的話就可以使用S[3]=’a’的方式改變值,然後再使用S=” “.join(S)還原成字串。