都說不管白貓還是黑貓,能抓到老鼠的都是好貓,但是如果一個抓的快,一個抓的慢呢?
第一階段
記得我剛學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小鎮”,發現更多幹貨知識!