Python连接字符串用join还是+
生活随笔
收集整理的這篇文章主要介紹了
Python连接字符串用join还是+
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我們先來看一下用join和+連接字符串的例子
str1 = " ".join(["hello", "world"]) str2 = "hello " + "world" print(str1) # 輸出 “hello world" print(str2) # 輸出 “hello world"兩者的結(jié)果是一樣,那么考慮這樣一個問題,這兩者在性能上有區(qū)別嗎?
我們來做個實驗,比較下join和+的性能
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' import timeitdef test1(strlist):return "".join(strlist) def test2(strlist):result = ""for v in strlist:result = result+vreturn result if __name__ == "__main__":strlist = ["a very very very very very very very long string" for n in range(100000)]timer1 = timeit.Timer("test1(strlist)", "from __main__ import strlist, test1")timer2 = timeit.Timer("test2(strlist)", "from __main__ import strlist, test2")time1 = timer1.timeit(number=100)time2 = timer2.timeit(number=100)print("join: %f, plus: %f" % (time1, time2))那么這里我們不對timeit模塊做過多解釋,你們可以理解為是一個對代碼效率進行檢測運行耗時的模塊。下次我們單獨起一篇來說這個timeit。
上面的程序有如下的輸出
join: 0.116944, plus: 0.394379可以看到,join的性能明顯好于+。這是為什么呢?
原因是這樣的,字符串是不可變對象,當用操作符+連接字符串的時候,每執(zhí)行一次+都會申請一塊新的內(nèi)存,然后復制上一個+操作的結(jié)果和本次操作的右操作符到這塊內(nèi)存空間,因此用+連接字符串的時候會涉及好幾次內(nèi)存申請和復制。
而join在連接字符串的時候,會先計算需要多大的內(nèi)存存放結(jié)果,然后一次性申請所需內(nèi)存并將字符串復制過去,這是為什么join的性能優(yōu)于+的原因。
所以在連接字符串數(shù)組的時候,我們應考慮優(yōu)先使用join。
總結(jié)
以上是生活随笔為你收集整理的Python连接字符串用join还是+的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中classmethod与s
- 下一篇: python中的set函数、列表的操作