日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在我開始使用Python時,+ 就像許多編程語言(如JAVA)一樣,使用加號運算符連接字符串非常直觀且容易。

但是,很快我意識到許多開發(fā)人員似乎喜歡使用該 .join() 方法而不是 + 。在本文中,我將介紹這兩種方法之間的區(qū)別以及為什么不應(yīng)該使用 + 。

開始

別在Python中使用“+”來連接字符串了,還有更好用的方法

 

作為初學(xué)者,或者剛從其他 + 用于連接字符串的語言切換過來的人,編寫這樣的代碼非常容易:

str1 = "I love "
str2 = "Python."
print(str1 + str2)
別在Python中使用“+”來連接字符串了,還有更好用的方法

 

隨著越來越多地使用Python,你可能會意識到其他人更喜歡使用這種 join() 方法:

str1 = "I love "
str2 = "Python."
print(''.join([str1, str2]))
別在Python中使用“+”來連接字符串了,還有更好用的方法

 

老實說,當(dāng)我第一次看到上述方法時,我以為這不是直觀,而是看起來很丑。

連接多個字符串

不過,有一次我需要在列表中加入多個字符串。

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 循環(huán)來逐個連接字符串。另外,結(jié)果字符串需要修剪我在開頭添加的空格,因為所有字符串都需要在前面添加空格,而不是第一個。你可能還有其他解決方案,例如將索引添加到 for 循環(huán)中,以使索引 = 0 處的字符串不應(yīng)添加到該空白中。無論如何,您仍然需要此 for 循環(huán)并為空白做一些事情。

之后,我回想起我以前看過的 .join() 方法,也許這是我需要使用它的時候!

別在Python中使用“+”來連接字符串了,還有更好用的方法

 

是不是很簡單!一行代碼可以完成所有工作。由于該 .join() 方法是由字符串對象調(diào)用的,因為該字符串對象將用于連接列表中的每個字符串,所以你無需擔(dān)心開頭的空白。

但是,你認(rèn)為這是我們需要使用該join()方法而不是的唯一原因 + 嗎?不,請看下面的內(nèi)容。

join()方法背后的邏輯

讓我們比較這兩種方法的性能。我們可以使用 %timeit Jupyter Notebook 的方法對其進(jìn)行評估。

別在Python中使用“+”來連接字符串了,還有更好用的方法

 

上面顯示的性能基于10萬條路徑,因此結(jié)果非常自信且顯而易見。使用該 join() 方法可以比使用+連接列表中的字符串快4倍。

為什么?

這是我繪制的概念圖,用于演示+用于連接字符串的方法。

別在Python中使用“+”來連接字符串了,還有更好用的方法

使用+運算符和for循環(huán)將字符串連接到列表中

這顯示了for循環(huán)和+運算符的作用:

  1. 對于每個循環(huán),可從列表中找到字符串
  2. Python執(zhí)行程序解釋該表達(dá)式 result += ' ' + s并為空白申請內(nèi)存地址' '。
  3. 然后,執(zhí)行程序意識到空格需要與字符串連接,因此它將為字符串申請內(nèi)存地址,s第一個循環(huán)為“ Life”。
  4. 對于每個循環(huán),執(zhí)行程序?qū)⑿枰獌纱紊暾垉?nèi)存地址,一個用于空白,另一個用于字符串
  5. 有12次內(nèi)存分配

但是,join()方法發(fā)生了什么?

別在Python中使用“+”來連接字符串了,還有更好用的方法

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

  • 執(zhí)行程序?qū)⒂嬎懔斜碇杏卸嗌賯€字符串?有6個;
  • 這意味著用于連接列表中字符串的字符串將需要重復(fù) 6–1= 5次;
  • 它知道總共需要11個內(nèi)存空間,因此所有這些空間將立即應(yīng)用并預(yù)先分配;
  • 按順序排列字符串,返回結(jié)果。

因此,很明顯,主要區(qū)別在于內(nèi)存分配的次數(shù)是性能提高的主要原因。

想象一下,使用該 join() 方法將6個字符串連接在一起已經(jīng)快了4倍。如果我們要連接大量字符串怎么辦?它將產(chǎn)生更大的變化!

總結(jié)

在這篇簡短的文章中,我比較了在Python中連接字符串時運 + 算符和 join() 方法之間的區(qū)別。顯然,join() 由于其性能,該方法是優(yōu)選的。

學(xué)習(xí)編程語言通常需要很長的時間,但是Python對于初學(xué)者來說花費的時間相對較短。入門后,開始使用Python,我們不應(yīng)就此止步并滿足于我們可以使用Python所做的事情。大神和普通程序員之間的區(qū)別來自對細(xì)節(jié)的處理。

-END--

分享到:
標(biāo)簽:Python
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達(dá)人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定