字符串拼接方式哪種快?使用Python分析連接字符的常用方法及性能

2021-01-07 python高手養成

上一篇文章我們分析了幾種常用的字符串拼接方式,從使用場合和時機對幾種方式進行了對比。今天,我們來對比一下這幾種方式的性能,以便大家在以後的應用中能迅速找到最優性能的字符串拼接方式。

準備好了嗎?馬上開始

首先,我們創建一個函數

該函數的作用是:隨機生成指定數目的字符串列表(字符串長度為5-8個字符)用於測試。

from random import choice, randint

from string import ascii_letters

def create_str(n):

# 字符列表

r_lst = []

for i in range(n):

# 生成n個字符串

tmp_str = ''

# 隨機生成5-8位的字符串

for j in range(randint(5, 8)):

tmp_str += choice(ascii_letters)

r_lst.append(tmp_str)

return r_lst

看下效果,比如生成20個隨機(5-8位)的字符串,我們直接使用create_str(20),即可獲取。

首先創建一個用於生成字符串的函數

test_str = 'TVOgaNh'+'SsKEWLQM'+'KiacqJ'+'ipwoVhnc'+'EfiRNa'+'qGRgLs'+'RDLdFhn'+'IMyES'+'uDcMK'+'NuzDYQU'+'GOdrJ'+'LhyvA'+'aEgdF'+'kDDHv'+'hsKLZklO'+'KnXeDJNc'+'LvVeo'+'ExNDpCAJ'+'khuDHP'+'BjvuIuA'

其次,我們對測試方法進行分類

我們將前面討論的方法分為三類(分類方法參照了腳本之家中Python貓發表的一篇《Python拼接字符串的7種方法總結》的博文)

格式化類(%、format()函數)

拼接類(+、join()函數)

插值類(F-strings)

分別取其中一個進行比較看下性能。

格式化類:%和format()函數比較

前提:隨機生成1000、10000個字符串列表,使用for循環遍歷添加每一個字符串最終獲取拼接後的字符串。

格式化類性能比較

從上圖可以看到,format()函數和%拼接字符串性能差異不大,選擇自己喜歡的就可以了,但是為了增加程序可讀性,建議使用format()函數進行拼接。

拼接類:+和join()函數比較

前提:隨機生成100000個字符串列表,通過各自方法(for循環和序列拼接)最終獲取拼接後的字符串。

拼接類性能比較

從上圖可以看出,join()函數在數據量大時,性能明顯優於'+'符號拼接。這是因為'+'符號拼接每次拼接時都會開闢一塊新的內存空間。因此,在數據量較大時,字符換序列拼接建議直接使用join()函數。

插值類:F-strings分別比較拼接10000個和100000個字符串的效率

測試代碼如下所示。

F-strings插值類性能測試

我們與格式化類和拼接類分別進行比較,如下所示。

F-strings插值類性能比較

得出什麼結論?

字符串序列拼接,不論數據量大小,首選join()函數;

格式化類處理中,%和format()拼接差別不大,但是format()函數可讀性要好一點;

在數據量小於100000,字符串拼接中F-strings性能優於其它拼接方法(前提是Python版本必須大於3.6.2);

數據量少、對程序性能要求不高、程序猿用腦過度時,選用『+』拼接;

當涉及對字符串格式進行處理時,首選format()函數和F-strings方法。

未完待續

好了,今天的內容就到這裡了,我們利用了兩篇內容對Python中字符串拼接進行了總結測試,分析了常用的方法,在這些方法中,大家參照結論的基礎上,選擇自己喜歡常用的方法。有時候,在程序實現初期對性能不要考慮太多,考慮太多有時候會影響程序開發。但是,所謂熟能生巧,接觸多了,在選擇數據結構或者對數據結構進行處理時,就會自然而然的選擇性能表現優秀的方式方法。建議多練習,平時多涉獵相關內容。「書到用時方恨少」,平時多練、多積累類似的知識點,對大家的編程學習也是很有益的。

喜歡的關注我,後續會推出更有意思的內容,大家有沒更好的字符串處理辦法呢?歡迎留言。

轉載請註明出處,百家號:Python高手養成

相關焦點

  • 真的了解字符串拼接嗎?用Python拼接字符串的常用方法及性能分析
    前幾篇文章,我們對Python常用的操作技能進行了匯總。今天,我們來梳理一下Python拼接字符串的幾種常用方法,並對方法進行比較。本篇不會全部進行匯總,旨在通過幾種常用的方法在不同條件下性能進行對比,為大家提供一種字符串使用的指導意見。大家選擇自己熟悉的掌握並使用即可,不需要全部進行記憶(留下大腦空間記點別的東西……)。常見的字符串拼接方式「+」操作符拼接「+」操作符連接字符串是Python中比較經典的字符串拼接方式。可以使用「+」將兩個字符串直接進行拼接。
  • Python拼接字符串的七種方式
    公眾號Python貓, 專注python技術、數據科學和深度學習,力圖創造一個有趣又有用的學習分享平臺。忘了在哪看到一位編程大牛調侃,他說程式設計師每天就做兩件事,其中之一就是處理字符串。相信不少同學會有同感。幾乎任何一種程式語言,都把字符串列為最基礎和不可或缺的數據類型。而拼接字符串是必備的一種技能。今天,我跟大家一起來學習Python拼接字符串的七種方式。
  • 詳解 Python 拼接字符串的 7 種方式
    這種方式最常用、直觀、易懂,是入門級的實現方式。但是,它也存在兩處讓人容易犯錯的地方。首先,新入門編程的同學容易犯錯,他們不知道字符串是不可變類型,新的字符串會獨佔一塊新的內存,而原來的字符串保持不變。上例中,拼接前有兩段字符串,拼接後實際有三段字符串。
  • Python編程23:字符串拼接
    字符串的訪問就是讀取字符串的內容或者部分內容,字符串的分割就是把字符串按照一定的規律分成幾部分。那如果我們想把幾個字符串拼接起來呢?字符串的拼接字符串既然有需要分割的時候,那自然就也有需要結合的時候。今天我會介紹兩種常用的方式:1、使用「+」號如果只是合併少數字符串,可以使用加號「+」。
  • Python語言中字符串的拆分,連接及拼接
    指定分隔符使用 Maxsplit 對拆分進行限定字符串的連接及拼接使用運算符 + 進行字符串連接使用 .Join() 進行字符串連接合在一起來嘗試生活中總有幾樣註定的事:死亡、稅單以及需要處理字符串的程式設計師。
  • Python語言中字符串的拆分,連接及拼接(下篇)
    還有另一種更強大的方法將字符串連接在一起:join( )方法最常見的情形是當有一個像是由字符串組成的可迭代列表,您想要把這些字符串列表合成一個字符串,這時候就需要用到.join()方法。與.split( )類似,.join( )也是一個字符串的實例方法。 如果您所有字符串都是可迭代的,那麼.join( )調用的對象是誰呢?這是一個有點棘手的問題。 請記住,當您使用.split( )時,是在要分割的字符串或字符上調用它。而.join( )的操作正好相反,所以您要在想要用來連接可迭代字符串的字符串或字符上調用它:Python代碼:
  • Python字符串拼接(包含字符串拼接數字)
    在 Python 中拼接(連接)字符串很簡單,可以直接將兩個字符串緊挨著寫在一起,具體格式為:strname = "str1" "
  • Python中字符串拼接的三種方式
    在Python中,我們經常會遇到字符串的拼接問題,在這裡我總結了三種字符串的拼接方式: 1.使用加號(+)號進行拼接加號(+)號拼接是我第一次學習Python常用的方法,我們只需要把我們要加的拼接到一起就行了,不是變量的使用單引號或雙引號括起來,是變量直接相加就可以,但是我們一定要注意的是,當有數字的時候一定要轉化為字符串格式才能夠相加,不然會報錯。
  • 小瘋談python:字符串的拼接與格式化輸出
    因此為了使結果具有更好的可讀性和靈活性,字符串的格式化輸出就顯得格外重要。例如,我現在接受了用戶的輸入的年齡信息,如果我直接將這個年齡列印在控制臺上那麼對於需要這些數據的人來說可能不友好,因為他們可能不知道這個數據是什麼意思,也就是說列印出來到數據不具有泛讀性。同樣的在字符串中我們無法直接使用代碼中的變量因為python解釋器會默認字符串內的元素為字符。
  • 元旦將至,祝新年快樂的最佳方式,用Python找到Happy New Year!
    新的一年要有學習計劃哦前幾篇內容我們了解了拼接字符串的常用方法(參見用Python拼接字符串的常用方法及性能分析),並對幾種字符串拼接方法作了性能上的分析(參見字符串拼接方式哪種快?使用Python分析連接字符的常用方法及性能)。今天的內容當然是字符串的拆分咯!
  • 為什麼 Python 的 f-string 可以連接字符串與數字?
    >TypeError: can only concatenate str (not "int") to str它報類型錯誤了(TypeError),說字符串只能連接(concatenate)字符串,不能連接 int 類型。
  • Java字符串拼接效率分析及最佳實踐
    java連接字符串有多種方式,比如+操作符,StringBuilder.append方法,這些方法各有什麼優劣(可以適當說明各種方式的實現細節)? 按照高效的原則,那麼java中字符串連接的最佳實踐是什麼? 有關字符串處理,都有哪些其他的最佳實踐?
  • Python 入門 – 使用字符串
    Python 3將字符串定義為「文本序列類型」。你可以使用內置的str()函數將其他類型轉換為字符串。在本文中,你將學習如何:創建字符串字符串方法字符串格式化字符串連接字符串切片讓我們從學習創建字符串的不同方法開始吧!
  • Python的list、元組、字典、字符串常用方法操作
    導讀Python的list、元組、字典、字符串常用方法操作
  • Python基礎(六):字符串的使用(上)
    字符串分割:split()split ()可以基於指定分隔符,將字符串分割成為多個字符串, 然後存到一個「 列表」 中(!!!!很關鍵,這個)。如果不指定分隔符,將默認使用空白字符(空格/換行符/制表符)。
  • 十六、深入Python字符串
    「@Author :Runsen」python日常處理字符串較多,本文總結一下Python的日常使用。注意python的字符串是不可變的,這個和元組一樣。但是在python中如果想要改變字符串,往往需要O(n)的時間複雜度,n是新字符串的長度拼接字符串str1 += str2  # 表示 str1 = str1 + str2# 這個時間複雜度是多少s = ''for n in range(0, 100000):    s +
  • Python3的字符串類型(瘋狂Python)
    >4.2.8 字符串的查找,替換4.2.9 字符串的分割,連接方法4.2.9 運算符---------------------4.2 字符串入門String字符串的意思就是字符串可以用+運算符連接在一起,用*運算符重複。Python中的字符串有兩種索引方式,從左往右以0開始,從右往左以-1開始。Python中的字符串不能改變。
  • Python字符串的拼接
    第七十一節:字符串的拼接在前面學習Python的數據類型的時候,就了解過字符串(詳見16節內容),所謂「字符串」,就是連續的字符序列,可以是計算機所能表示的一切字符的集合。什麼是拼接呢?簡單地說就是把單獨的個體相加在一起組成一個新的個體。在Python中,兩個以上不同的字符串,可以直接使用運算符加號「+」,將它們拼接起來。(這個應該可以直接理解為字符串相加運算。)
  • 深入理解Python字符串的用法
    拼接字符串字符串的拼接操作最常用,我專門為這個話題寫過一篇《Python拼接字符串的七種方式》,建議你回看。在此,簡單回顧一下:七種拼接方式從實現原理上劃分為三類,即格式化類(%佔位符、format()、template)、拼接類(+操作符、類元祖方式、join())與插值類(f-string),在使用上,我有如下建議——當要處理字符串列表等序列結構時,採用join()方式;拼接長度不超過20時,選用+號操作符方式;長度超過20的情況,高版本選用f-string,低版本時看情況使用
  • Python中的字符串和字符數據(上)
    字符串索引字符串切片在字符串切片過程中指定步幅向字符串中插入變量修改字符串字符串內置方法bytes對象定義bytes對象字面量使用內置bytes()函數定義一個bytes對象bytes對象上的操作bytearray對象結論