Python 字符串連接方式有這么種社牲,你知道嗎粪薛?

字符串連接,就是將2個(gè)或以上的字符串合并成一個(gè)搏恤,看上去連接字符串是一個(gè)非澄ナ伲基礎(chǔ)的小問題,但是在Python中熟空,我們可以用多種方式實(shí)現(xiàn)字符串的連接藤巢,稍有不慎就有可能因?yàn)檫x擇不當(dāng)而給程序帶來性能損失。

方法1:加號(hào)連接

很多語言都支持使用加號(hào)連接字符串息罗,Python也不例外掂咒,只需要簡(jiǎn)單的將2個(gè)或多個(gè)字符串相加就可以完成拼接。

方法2:使用%操作符

在Python 2.6以前迈喉,%操作符是唯一一種格式化字符串的方法绍刮,它也可以用于連接字符串。

方法3:使用format方法

format方法是Python 2.6中出現(xiàn)的一種代替%操作符的字符串格式化方法挨摸,同樣可以用來連接字符串孩革。

方法4:使用f-string

Python 3.6中引入了Formatted String Literals(字面量格式化字符串),簡(jiǎn)稱f-string得运,f-string是%操作符和format方法的進(jìn)化版膝蜈,使用f-string連接字符串的方法和使用%操作符、format方法類似熔掺。

方法5:使用str.join()方法

字符串有一個(gè)內(nèi)置方法join饱搏,其參數(shù)是一個(gè)序列類型,例如數(shù)組或者元組等置逻。

對(duì)比測(cè)試

既然連接字符串有這么多方法推沸,那么使用時(shí)到底選擇哪種呢?我們從代碼可讀性和性能兩個(gè)層面來評(píng)估一下上面5種方法诽偷。

使用timeit模塊坤学,分別執(zhí)行上述5種方法的示例代碼100000次,執(zhí)行時(shí)間如圖报慕。

可以看到深浮,%操作符、format和f-string都是字符串格式化方法眠冈,性能依次遞增飞苇,加號(hào)連接的性能和f-string不相上下。

有一點(diǎn)需要注意的是蜗顽,字符串類型是不可變的布卡,所以每一次應(yīng)用加號(hào)連接字符串都會(huì)生成一個(gè)新的字符串,連接多個(gè)字符串時(shí)雇盖,效率低下就是必然的了忿等,我們將一次連接的字符串提升到10個(gè)和20個(gè),再來進(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)連接好得多。

連接大量字符串時(shí)


joinf-string都是性能最好的選擇尊浓,選擇時(shí)依然取決于你使用的Python版本以及對(duì)可讀性的要求逞频,f-string在連接大量字符串時(shí)可讀性并不一定好。切記不要使用加號(hào)連接栋齿,尤其是在for循環(huán)中苗胀。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市瓦堵,隨后出現(xiàn)的幾起案子基协,更是在濱河造成了極大的恐慌,老刑警劉巖菇用,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件澜驮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡惋鸥,警方通過查閱死者的電腦和手機(jī)杂穷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門悍缠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人耐量,你說我怎么就攤上這事飞蚓。” “怎么了廊蜒?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵趴拧,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我山叮,道長(zhǎng)著榴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任屁倔,我火速辦了婚禮脑又,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘锐借。我一直安慰自己挂谍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布瞎饲。 她就那樣靜靜地躺著口叙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗅战。 梳的紋絲不亂的頭發(fā)上妄田,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音驮捍,去河邊找鬼疟呐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛东且,可吹牛的內(nèi)容都是我干的启具。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼珊泳,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼鲁冯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起色查,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤薯演,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后秧了,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體跨扮,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了衡创。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帝嗡。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖璃氢,靈堂內(nèi)的尸體忽然破棺而出丈探,到底是詐尸還是另有隱情,我是刑警寧澤拔莱,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站隘竭,受9級(jí)特大地震影響塘秦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜动看,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一尊剔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧菱皆,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至篷店,卻和暖如春祭椰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疲陕。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工方淤, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蹄殃。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓携茂,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親诅岩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子讳苦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,723評(píng)論 0 10
  • 前言 最先接觸編程的知識(shí)是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí)逮京,c語言卿堂,java語言,單片機(jī)的匯編語言等;大學(xué)畢...
    oceanfive閱讀 3,048評(píng)論 0 7
  • 有一顆不知名的樹 生長(zhǎng)在一個(gè)不知名的地方 矗立在一個(gè)不知名的巖石旁 即使無人知曉它的存在 那又何妨草描,只為今生一睹這...
    簡(jiǎn)書詞話閱讀 259評(píng)論 0 0
  • Given a binary tree, find its minimum depth. The minimum ...
    juexin閱讀 62評(píng)論 0 0
  • 知了聒噪得爬過了一整個(gè)夏天 清晨的風(fēng)撥亂了樹的投影 還未懷念夠秋的薄涼 相思便把一捧年華放下 十里桃花的光景 只剩...
    洛水江南閱讀 309評(píng)論 0 3