天天看點

python中連接配接字元串用join還是+

join的性能明顯好于+。這是為什麼呢?

原因是這樣的,Python字元串是不可變對象,當用操作符+連接配接字元串的時候,每執行一次+都會申請一塊新的記憶體,然後複制上一個+操作的結果和本次操作的右操作符到這塊記憶體空間,是以用+連接配接字元串的時候會涉及好幾次記憶體申請和複制。而join在連接配接字元串的時候,會先計算需要多大的記憶體存放結果,然後一次性申請所需記憶體并将字元串複制過去,這是為什麼join的性能優于+的原因。是以在連接配接字元串數組的時候,我們應考慮優先使用join。

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()
           

輸出:

0.6990399360656738

0.09200525283813477