Python必懂知識點:連接字符串,到底用+還是join

都說不管白貓還是黑貓,能抓到老鼠的都是好貓,但是如果一個抓的快,一個抓的慢呢?

Python必懂知識點:連接字符串,到底用+還是join

第一階段

記得我剛學Python的時候,就是用+操作符來連接字符串的,反正和join()方法得到的結果都一樣,幹嘛不用簡單點的呢?

<code>a = 'o'
b = 'k'
c = a+b
d = ''.join([a, b])
print(c)  # ok
print(d)  # ok/<code>


第二階段

當我需要將列表裡面的字符(串)連接起來時...

<code>strList = ['h', 'e', 'l', 'l', 'o']

# 用+操作符
def test1():
    result = ''
    for i in strList:
        result+=i
    return result

# 用join()方法
def test2():
    return ''.join(strList)/<code>

真香,還是join()方法簡單


第三階段

發現join()方法不僅簡單,速度還快

<code>from timeit import timeit

print(timeit('test1()', 'from __main__ import test1'))
# 0.42002649999999997

print(timeit('test2()', 'from __main__ import test2'))
# 0.19338939999999993/<code>

可以看到,使用join()方法耗時更短,如果strList列表中的元素再多點,那麼二者的耗時差別會進一步放大。

究其原因是因為,每用一次+操作符都要申請一個新的內存空間,也就是說,把hello中的五個字符連接起來,需要執行四次+操作,共申請了四次內存空間,所以比較慢。

而使用join()方法,則是先計算共需多少內存空間,然後一次性申請。

關注微信公眾號“Python小鎮”,發現更多幹貨知識!


分享到:


相關文章: