Python 字串連線方式有這麼種,你知道嗎?

2021-09-27 01:50:18 字數 1937 閱讀 4494

字串連線,就是將2個或以上的字串合併成乙個,看上去連線字串是乙個非常基礎的小問題,但是在python中,我們可以用多種方式實現字串的連線,稍有不慎就有可能因為選擇不當而給程式帶來效能損失。

很多語言都支援使用加號連線字串,python也不例外,只需要簡單的將2個或多個字串相加就可以完成拼接。

a = 'python'

b = '學習者'

r = a + b # 輸出'python學習者'

在python 2.6以前,%操作符是唯一一種格式化字串的方法,它也可以用於連線字串。

'''

'''a = 'python'

b = '學習者'

r = '%s%s' % (a, b) # 輸出'python學習者'

format方法是python 2.6**現的一種代替%操作符的字串格式化方法,同樣可以用來連線字串。

a = 'python'

b = '學習者'

r = '{}{}'.format(a, b)

python 3.6中引入了formatted string literals(字面量格式化字串),簡稱f-string,f-string是%操作符和format方法的進化版,使用f-string連線字串的方法和使用%操作符、format方法類似。

a = 'python'

b = '學習者'

r = f''

字串有乙個內建方法join,其引數是乙個序列型別,例如陣列或者元組等。

'''

'''a = 'python'

b = '學習者'

r = ''.join([a, b])

既然連線字串有這麼多方法,那麼使用時到底選擇哪種呢?我們從**可讀性和效能兩個層面來評估一下上面5種方法。

使用timeit模組,分別執行上述5種方法的示例**100000次,執行時間如圖。

可以看到,%操作符、format和f-string都是字串格式化方法,效能依次遞增,加號連線的效能和f-string不相上下。

有一點需要注意的是,字串型別是不可變的,所以每一次應用加號連線字串都會生成乙個新的字串,連線多個字串時,效率低下就是必然的了,我們將一次連線的字串提公升到10個和20個,再來進行2輪測試,下面是連線20個字串時的耗時情況。

和連線兩個字串時的結果出現了一些不同,首先使用加號連線的方式在字串數量較多時(大於10個),效能會急劇下降,str.join()方法在連線大量字串時效能最好。

連線少量字串時

使用加號連線符在效能和可讀性上都是明智的,如果對可讀性有更高的要求,並且使用的python 3.6以上版本,f-string也是乙個非常好的選擇,例如下面這種情況,f-string的可讀性顯然比加號連線好得多。

a = f'姓名: 年齡: 性別:'

b = '姓名:' + name + '年齡:' + age + '性別:' + gender

連線大量字串時joinf-string都是效能最好的選擇,選擇時依然取決於你使用的python版本以及對可讀性的要求,f-string在連線大量字串時可讀性並不一定好。切記不要使用加號連線,尤其是在for迴圈中。

python 字串連線

python拼接字串一般有以下幾種方法 1 直接通過 操作符拼接 s hello world print s 輸出結果 hello world 使用這種方式進行字串連線的操作效率低下,因為python中使用 拼接兩個字串時會生成乙個新的字串,生成新的字串就需要重新申請記憶體,當拼接字串較多時自然會影...

python筆記 字串連線

p.p1 p.p2 p.p3 p.p4 p.p5 p.p6 p.p7 p.p8 span.s1 span.s2 span.s3 字串連線 title python大會 time 2018 01 06 5 print protocol domain url data 使用加號連線字串 6 print ...

字串連線

輸入n個字串s i 你要把他們按某個順序連線起來,使得字典序最小。1 n 100 每個字串長度 100 字串只包含小寫字母 input 第一行乙個整數n。接下來每行乙個字串s i output 一行乙個字串表示把輸入的n個字串按某個順序連線之後的結果input示例 6 itlooks like an...