摘要:私房菜輸出私房菜方法使用方法方法是中出現(xiàn)的一種代替操作符的字符串格式化方法,同樣可以用來(lái)連接字符串。私房菜方法使用方法字符串有一個(gè)內(nèi)置方法,其參數(shù)是一個(gè)序列類(lèi)型,例如數(shù)組或者元組等。
字符串連接,就是將2個(gè)或以上的字符串合并成一個(gè),看上去連接字符串是一個(gè)非?;A(chǔ)的小問(wèn)題,但是在Python中,我們可以用多種方式實(shí)現(xiàn)字符串的連接,稍有不慎就有可能因?yàn)檫x擇不當(dāng)而給程序帶來(lái)性能損失。
方法1:加號(hào)連接很多語(yǔ)言都支持使用加號(hào)連接字符串,Python也不例外,只需要簡(jiǎn)單的將2個(gè)或多個(gè)字符串相加就可以完成拼接。
a = "Python" b = "私房菜" r = a + b # 輸出"Python私房菜"方法2:使用%操作符
在Python 2.6以前,%操作符是唯一一種格式化字符串的方法,它也可以用于連接字符串。
a = "Python" b = "私房菜" r = "%s%s" % (a, b) # 輸出"Python私房菜"方法3:使用format方法
format方法是Python 2.6中出現(xiàn)的一種代替%操作符的字符串格式化方法,同樣可以用來(lái)連接字符串。
a = "Python" b = "私房菜" r = "{}{}".format(a, b)方法4:使用f-string
Python 3.6中引入了Formatted String Literals(字面量格式化字符串),簡(jiǎn)稱(chēng)f-string,f-string是%操作符和format方法的進(jìn)化版,使用f-string連接字符串的方法和使用%操作符、format方法類(lèi)似。
a = "Python" b = "私房菜" r = f"{a}"方法5:使用str.join()方法
字符串有一個(gè)內(nèi)置方法join,其參數(shù)是一個(gè)序列類(lèi)型,例如數(shù)組或者元組等。
a = "Python" b = "私房菜" r = "".join([a, b])對(duì)比測(cè)試
既然連接字符串有這么多方法,那么使用時(shí)到底選擇哪種呢?我們從代碼可讀性和性能兩個(gè)層面來(lái)評(píng)估一下上面5種方法。
使用timeit模塊,分別執(zhí)行上述5種方法的示例代碼100000次,執(zhí)行時(shí)間如圖。
可以看到,%操作符、format和f-string都是字符串格式化方法,性能依次遞增,加號(hào)連接的性能和f-string不相上下。
有一點(diǎn)需要注意的是,字符串類(lèi)型是不可變的,所以每一次應(yīng)用加號(hào)連接字符串都會(huì)生成一個(gè)新的字符串,連接多個(gè)字符串時(shí),效率低下就是必然的了,我們將一次連接的字符串提升到10個(gè)和20個(gè),再來(lái)進(jìn)行2輪測(cè)試,下面是連接20個(gè)字符串時(shí)的耗時(shí)情況。
和連接兩個(gè)字符串時(shí)的結(jié)果出現(xiàn)了一些不同,首先使用加號(hào)連接的方式在字符串?dāng)?shù)量較多時(shí)(大于10個(gè)),性能會(huì)急劇下降,str.join()方法在連接大量字符串時(shí)性能最好。
總結(jié)連接少量字符串時(shí)
使用加號(hào)連接符在性能和可讀性上都是明智的,如果對(duì)可讀性有更高的要求,并且使用的Python 3.6以上版本,f-string也是一個(gè)非常好的選擇,例如下面這種情況,f-string的可讀性顯然比加號(hào)連接好得多。
a = f"姓名:{name} 年齡:{age} 性別:{gender}" b = "姓名:" + name + "年齡:" + age + "性別:" + gender
連接大量字符串時(shí)
join和f-string都是性能最好的選擇,選擇時(shí)依然取決于你使用的Python版本以及對(duì)可讀性的要求,f-string在連接大量字符串時(shí)可讀性并不一定好。切記不要使用加號(hào)連接,尤其是在for循環(huán)中。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/41924.html
摘要:在中字符串連接有多種方式,這里簡(jiǎn)單做個(gè)總結(jié),應(yīng)該是比較全面的了,方便以后查閱。方法是中出現(xiàn)的一種代替操作符的字符串格式化方法,同樣可以用來(lái)連接字符串。小結(jié)連接少量字符串時(shí)推薦使用號(hào)操作符。參考鏈接你所不知道的字符串連接的秘密 在 Python 中字符串連接有多種方式,這里簡(jiǎn)單做個(gè)總結(jié),應(yīng)該是比較全面的了,方便以后查閱。 加號(hào)連接 第一種,通過(guò)+號(hào)的形式: >>> a, b = hell...
摘要:對(duì)象與屬性讓我們保持耐心,再梳理一下對(duì)象與屬性的關(guān)系對(duì)象是屬性的集合,當(dāng)對(duì)象的屬性是函數(shù)時(shí),我們將其稱(chēng)之為方法。 這篇博文的主要目的是為了填坑,很久之前我發(fā)表了一篇名為關(guān)于JavaScript對(duì)象中的一切(一) — 對(duì)象屬性的文章,想要談一談JavaScript對(duì)象,可那時(shí)只是貼了一張關(guān)于這個(gè)主題的思維導(dǎo)圖,今天我會(huì)針對(duì)這一主題進(jìn)行展開(kāi),將JavaScript對(duì)象一些平常不太常用的知識(shí)...
摘要:然而為了讓我們更方便的使用這個(gè)常用功能,語(yǔ)言本身也在對(duì)字符串格式化方法進(jìn)行迭代。不少使用過(guò)的小伙伴會(huì)知道其中的模板字符串,采用直接在字符串中內(nèi)嵌變量的方式進(jìn)行字符串格式化操作,在版本中也為我們帶來(lái)了類(lèi)似的功能字面量格式化字符串,簡(jiǎn)稱(chēng)。 字符串格式化對(duì)于每個(gè)語(yǔ)言來(lái)說(shuō)都是一個(gè)非常基礎(chǔ)和常用的功能,學(xué)習(xí)Python的同學(xué)大概都知道可以用%語(yǔ)法來(lái)格式化字符串。然而為了讓我們更方便的使用這個(gè)常用...
摘要:有一點(diǎn)需要注意的是,默認(rèn)參數(shù)需要設(shè)置在必選參數(shù)后面,并且默認(rèn)參數(shù)既可以通過(guò)位置調(diào)用,也可以通過(guò)關(guān)鍵字調(diào)用。通過(guò)位置指定參數(shù)通過(guò)位置指定參數(shù)報(bào)錯(cuò),默認(rèn)參數(shù)必須在必選參數(shù)后面參數(shù)默認(rèn)值既支持關(guān)鍵字參數(shù),也支持僅限關(guān)鍵字參數(shù)。 showImg(https://segmentfault.com/img/bVbdxcE?w=1224&h=618); 函數(shù)參數(shù)處理機(jī)制是Python中一個(gè)非常重要的...
閱讀 3637·2021-10-11 10:59
閱讀 1657·2021-09-29 09:35
閱讀 2328·2021-09-26 09:46
閱讀 3837·2021-09-10 10:50
閱讀 1006·2019-08-29 12:17
閱讀 883·2019-08-26 13:40
閱讀 2519·2019-08-26 11:44
閱讀 2169·2019-08-26 11:22