首頁/ 娛樂/ 正文

初學者都在坑裡!不要在Python中使用“ +”來連線字串

全文共

1611

字,預計學習時長

6

分鐘

初學者都在坑裡!不要在Python中使用“ +”來連線字串

圖源:unsplash

很多初學者都像我一樣,最開始使用Python時,會不自覺地使用“+”來連線字串,就像在許多其他程式語言(比如Java)中那樣,因為這樣既直觀又容易。

但我很快意識到成熟的開發人員似乎更喜歡使用。join()來連線字串,而不是“+”。

你現在一定像我剛知道這一點時一樣困惑。本文中,我將告訴你這兩種方法之間的區別,以及為什麼不應該使用“+”。

初學者都在坑裡!不要在Python中使用“ +”來連線字串

開始

作為一名初學者,或者剛從使用“+”連線字串的其他程式語言切換過來的人,很順手地就會寫出這樣的程式碼:

str1 =“I love”

str2 =“Python。” print(str1 + str2)

初學者都在坑裡!不要在Python中使用“ +”來連線字串

但時間久了,你或許或許就會發現,別人都是這樣寫的:

str1 =“I love”

str2 =“Python。” print(‘’。join([str1,str2]))

初學者都在坑裡!不要在Python中使用“ +”來連線字串

實話說,當我第一次看到上述方法時,我認為這既不直觀也不美觀。

初學者都在坑裡!不要在Python中使用“ +”來連線字串

連線多個字串

轉折發生在不久之後,有一次我需要連線列表中的多個字串。

strs = [‘Life’,‘is’,‘short’,‘I’,‘use’,‘Python’]

最初,我是這樣做的:

strs = [‘Life’, ‘is’, ‘short,’,‘I’, ‘use’, ‘Python’]def join_strs(strs):

result = ‘’

for s in strs:

result += ‘ ’ + s

return result[1:]join_strs(strs)

初學者都在坑裡!不要在Python中使用“ +”來連線字串

我必須編寫一個for迴圈來逐個連線字串。另外,結果字串前需要刪除我在開頭新增的空格,因為所有字串都需要在前面新增空格,而不是單是開頭。

或許你有其他解決方案,例如將索引新增到for迴圈中,這樣就不應將index=0處的字串新增到此空格處。無論如何,你仍然需要使用此for迴圈併為空格做些什麼。

初學者都在坑裡!不要在Python中使用“ +”來連線字串

圖源:unsplash

這時,我回想起以前曾經看過。join()方法,靈光乍現,也許這正是我需要使用它的時候!

初學者都在坑裡!不要在Python中使用“ +”來連線字串

超輕鬆解決了!一行程式碼可以完成所有工作。由於。join()方法是由字串物件呼叫的,該字串物件將用於連線列表中的每個字串,因此你無需擔心開頭的空格。

但這不是我們需要使用join()而不是“+”方法的唯一原因。

初學者都在坑裡!不要在Python中使用“ +”來連線字串

join()方法背後的邏輯

讓我們來比較一下這兩種方法的效能,使用Jupyter Notebook的魔術方法%timeit來對其進行評估。

初學者都在坑裡!不要在Python中使用“ +”來連線字串

上面顯示的效能基於10萬條路徑,結果是非常可信且顯而易見的。使用join()方法可能比使用“+”來連線列表中的字串快4倍。

這是為什麼呢?看看我繪製的概念圖,用於演示使用“+”連線字串的方法:

初學者都在坑裡!不要在Python中使用“ +”來連線字串

使用“+”運算子和for迴圈將字串連線

這顯示了for迴圈和“+”運算子的作用:

1。 對於每個迴圈,都可以從列表中找到字串

2。對於每個迴圈,執行程式將需要申請兩次記憶體地址,一次用於空格,另一次用於字串。

3。Python執行程式解釋表示式result + =‘’+s併為空格申請記憶體地址。

4。然後,執行程式意識到空格需要與字串連線,因此它將為字串s申請記憶體地址,這是第一個迴圈“life”。

5。其中還存在12次記憶體分配。

那麼,使用join()方法發生了什麼?

初學者都在坑裡!不要在Python中使用“ +”來連線字串

使用“ join()”方法將字串連線到列表中

1。執行程式將計算列表中有多少個字串。這裡有6個。

2。這意味著用於連線列表的字串需要重複6-1 =5次。

3。這裡總共需要11個記憶體空間,因此所有的這些空間將被立即應用並被預先分配。

4。然後按順序排列字串,再返回結果頁面。

很明顯,主要的區別在於記憶體分配的次數,這就是提高效能的主要原因。想象一下,使用join()方法將6個字串連線在一起,速度已經快了4倍。如果我們連線了大量的字串呢?它將發生更大的變化!

在Python中連線字串時,顯然,考慮到其效能,join()方法是首選。

初學者都在坑裡!不要在Python中使用“ +”來連線字串

圖源:unsplash

通常來說,學習一門程式語言需要很長的時間。但是初學者上手Python的時間相對較短,這是它的優勢之一。但我們不應止步於此並滿足於現在可以使用Python所做的事情。

畢竟,平凡和卓越之間的差距可能正來自於一些小細節。

初學者都在坑裡!不要在Python中使用“ +”來連線字串

留言點贊關注

我們一起分享AI學習與發展的乾貨

如轉載,請後臺留言,遵守轉載規範

相關文章

頂部