久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

初學(xué)者都在坑里,!不要在Python中使用“ ”來(lái)連接字符串

 禁忌石 2022-03-16

全文共1611字,,預(yù)計(jì)學(xué)習(xí)時(shí)長(zhǎng)6分鐘

文章圖片1

圖源:unsplash

很多初學(xué)者都像我一樣,,最開始使用Python時(shí),會(huì)不自覺(jué)地使用“+”來(lái)連接字符串,,就像在許多其他編程語(yǔ)言(比如Java)中那樣,因?yàn)檫@樣既直觀又容易,。

但我很快意識(shí)到成熟的開發(fā)人員似乎更喜歡使用.join()來(lái)連接字符串,,而不是“+”。

你現(xiàn)在一定像我剛知道這一點(diǎn)時(shí)一樣困惑,。本文中,,我將告訴你這兩種方法之間的區(qū)別,以及為什么不應(yīng)該使用“+”,。

文章圖片2

開始

作為一名初學(xué)者,,或者剛從使用“+”連接字符串的其他編程語(yǔ)言切換過(guò)來(lái)的人,很順手地就會(huì)寫出這樣的代碼:

str1 =“I love”str2 =“Python.” print(str1 + str2)
文章圖片3

但時(shí)間久了,,你或許或許就會(huì)發(fā)現(xiàn),,別人都是這樣寫的:

str1 =“I love”str2 =“Python.” print(''.join([str1,str2]))
文章圖片4

實(shí)話說(shuō),,當(dāng)我第一次看到上述方法時(shí),,我認(rèn)為這既不直觀也不美觀。

文章圖片5

連接多個(gè)字符串

轉(zhuǎn)折發(fā)生在不久之后,,有一次我需要連接列表中的多個(gè)字符串,。

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)
文章圖片6

我必須編寫一個(gè)for循環(huán)來(lái)逐個(gè)連接字符串,。另外,結(jié)果字符串前需要?jiǎng)h除我在開頭添加的空格,,因?yàn)樗凶址夹枰谇懊嫣砑涌崭?,而不是單是開頭。

或許你有其他解決方案,,例如將索引添加到for循環(huán)中,,這樣就不應(yīng)將index=0處的字符串添加到此空格處。無(wú)論如何,,你仍然需要使用此for循環(huán)并為空格做些什么,。

文章圖片7

圖源:unsplash

這時(shí),我回想起以前曾經(jīng)看過(guò).join()方法,,靈光乍現(xiàn),,也許這正是我需要使用它的時(shí)候!

文章圖片8

超輕松解決了,!一行代碼可以完成所有工作,。由于.join()方法是由字符串對(duì)象調(diào)用的,該字符串對(duì)象將用于連接列表中的每個(gè)字符串,,因此你無(wú)需擔(dān)心開頭的空格,。

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

文章圖片9

join()方法背后的邏輯

讓我們來(lái)比較一下這兩種方法的性能,,使用Jupyter Notebook的魔術(shù)方法%timeit來(lái)對(duì)其進(jìn)行評(píng)估,。

文章圖片10

上面顯示的性能基于10萬(wàn)條路徑,結(jié)果是非??尚徘绎@而易見(jiàn)的,。使用join()方法可能比使用“+”來(lái)連接列表中的字符串快4倍。

這是為什么呢,?看看我繪制的概念圖,,用于演示使用“+”連接字符串的方法:

文章圖片11

使用“+”運(yùn)算符和for循環(huán)將字符串連接

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

1. 對(duì)于每個(gè)循環(huán),都可以從列表中找到字符串

2.對(duì)于每個(gè)循環(huán),,執(zhí)行程序?qū)⑿枰暾?qǐng)兩次內(nèi)存地址,,一次用于空格,另一次用于字符串,。

3.Python執(zhí)行程序解釋表達(dá)式result + =''+s并為空格申請(qǐng)內(nèi)存地址,。

4.然后,執(zhí)行程序意識(shí)到空格需要與字符串連接,,因此它將為字符串s申請(qǐng)內(nèi)存地址,,這是第一個(gè)循環(huán)“l(fā)ife”。

5.其中還存在12次內(nèi)存分配,。

那么,,使用join()方法發(fā)生了什么,?

文章圖片12

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

1.執(zhí)行程序?qū)⒂?jì)算列表中有多少個(gè)字符串。這里有6個(gè),。

2.這意味著用于連接列表的字符串需要重復(fù)6-1 =5次,。

3.這里總共需要11個(gè)內(nèi)存空間,因此所有的這些空間將被立即應(yīng)用并被預(yù)先分配,。

4.然后按順序排列字符串,,再返回結(jié)果頁(yè)面。

很明顯,,主要的區(qū)別在于內(nèi)存分配的次數(shù),,這就是提高性能的主要原因。想象一下,,使用join()方法將6個(gè)字符串連接在一起,,速度已經(jīng)快了4倍。如果我們連接了大量的字符串呢?它將發(fā)生更大的變化,!

在Python中連接字符串時(shí),,顯然,考慮到其性能,,join()方法是首選,。

文章圖片13

圖源:unsplash

通常來(lái)說(shuō),學(xué)習(xí)一門編程語(yǔ)言需要很長(zhǎng)的時(shí)間,。但是初學(xué)者上手Python的時(shí)間相對(duì)較短,這是它的優(yōu)勢(shì)之一,。但我們不應(yīng)止步于此并滿足于現(xiàn)在可以使用Python所做的事情,。

畢竟,平凡和卓越之間的差距可能正來(lái)自于一些小細(xì)節(jié),。

文章圖片14

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多