python編碼 迴圈新增字串的效率改進

2021-07-03 02:24:28 字數 626 閱讀 5904

#假設buf裡有很多字串,或者我們可以從buf裡提取出來很多字串,我們需要把這些字串用'\n'連線起來。

str = ''

for s in buf:

str += s + '\n'

執行之後我們會發現程式執行的特別慢,效率非常低,這是為什麼呢?

python裡字串是不可變的,所以每次str += s的時候,都是將str和s拷貝成乙個新的字串,然後賦給str。隨著迴圈的增加,所要拷貝的內容越來越多,字串的長度越來越長,最後導致str0被拷貝n+1此,str1被拷貝n次,呈指數級的增加。

這裡提供兩種解決方案。

f = open('temp.txt', 'w')

for s in buf:

f.write(s+'\n')

f.close()

f = open('temp.txt', 'r')

str = f.read()

f.close()

arr = 

for s in buf:

str = '\n'.join(arr)

python編碼 迴圈新增字串的效率改進

假設buf裡有很多字串,或者我們可以從buf裡提取出來很多字串,我們需要把這些字串用 n 連線起來。str for s in buf str s n 執行之後我們會發現程式執行的特別慢,效率非常低,這是為什麼呢?python裡字串是不可變的,所以每次str s的時候,都是將str和s拷貝成乙個新的字...

Python字串編碼

在python中有些特殊的地方是存在兩種字串,分別為str和unicode字串,他們都繼承自basestring。如 s hello world s為str us u hello world us為unicode。使用help str 和help unicode 可以檢視各自說明,他們都有decod...

python字串編碼

常見字元編碼型別 ascii 美國資訊交換標準碼,是目前計算機中最廣泛使用的字符集編碼。每個 ascii 碼以 1 個位元組 儲存,例如數字字元 0 的 ascii 碼是 0110000,十進位制表示為 48。unicode 為解決世界上上百種語言帶來混合 衝突,各國有各國的標準,顯示很容易出現亂碼...