python字符串連接效率問題

在python效率的討論問題中字符串的連接效率有提過,多數建議使用join來代替"+"進行字符串連接

python中一切皆對象 字符串對象就是c api中得stringobject.c看python源碼的objects文件可以找到

1."+"。使用加號連接2個字符串會調用靜態函數string_concat(register PyStringObject *a ,register PyObject * b),在這個函數中會開辟一塊大小是a+b的內存的和的存儲單元,然后將a,b字符串拷貝進去,試想一下,如果是n個字符串相連? 那么會開辟n-1次內存,是比較耗費資源的

2.對于使用join函數 "".join([a,b])? 會調用string_join函數? 會計算列表的長度? 一次分配一塊內存然后拷貝,所以n個字符串相連 開辟內存的次數是1次

所以如果只有2個相連效率區別不大? 但是數據多了就會有問題

加點東西(筆記)? python與c語言在創建變量時候的不同

1。整數,python有小整數緩沖池? 有一個范圍? 當定義一個整數a=3.然后刪除這個整數使用b=3發現a,b的地址一樣的 再使用 c = 1000023執行上面的操作我們發現2個數的地址不一樣? 小整數緩沖池

2。python中定義一個字符串s = "hello",g = "hello"后 ,s,g的地址相同 ,c語言定義char a[5] = "hello",char b[5] = "hello" ,a和b的字符串地址不同 ,說明又申請了一塊內存,python使用的interned機制 首先查詢

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • http://python.jobbole.com/85231/ 關于專業技能寫完項目接著寫寫一名3年工作經驗的J...
    燕京博士閱讀 7,628評論 1 118
  • 本節要介紹的是Python里面常用的幾種數據結構。通常情況下,聲明一個變量只保存一個值是遠遠不夠的,我們需要將一組...
    小黑y99閱讀 65,224評論 0 9
  • 第5章 引用類型(返回首頁) 本章內容 使用對象 創建并操作數組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,270評論 0 4
  • 這幾天有空,學習了CSS浮動和定位,和大家分享幾個問題,希望對學習CSS浮動和定位的同學有所幫助。 一、文檔流的概...
    betterwlf閱讀 10,097評論 13 45
  • 和自己喜愛的小動物,在美麗的春天,聞著清新的花香,圍坐在圓桌前,喝著甜甜的果汁,談一些開心的事情。
    徐一元閱讀 186評論 0 2