看板 Python 關於我們 聯絡資訊
如果要針對一個list去增加內容時 code如下: ======= from time import time def cal(x): list = [] start = time() for i in xrange(x): list.append(i) #Line 6:可修改的一行 end = time() print end-start, len(list) x = int(raw_input("enter a number:")) cal(x) ======= 如果修改line 6為「list += [i]」 或「list = list + [i]」 測試出來的時間會有差異 我實際用做1000000次去測試list擴編的速度 使用 list.append(i) 約為0.24秒 使用 list += [i] 約為0.35秒 使用 list = list + [i] 約為49.7秒 很明顯的list = list + [i]的速度慢很多 "There should be one-- and preferably only one --obvious way to do it." 既然如此 為何Python還要允許存在這種擴編list的方式呢?有其他時機會用上嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.59.68
Lucemia:[] + [1] 是產生新的 list, 不影響原list 04/24 07:23
Lucemia:list.append 是直接對原list 做動作 兩者語意上就不同 04/24 07:24
leondemon:不過.append比+=還要快 那似乎+=就沒意義了(懶人語法?) 04/25 00:21
sbrhsieh:list += [i] 多一個成本在 [i] 這個 list construction 04/25 00:44
ironcool:有可能需要不修改orginal object 所以+=有必要 另外由于 05/06 21:13
ironcool:+=也只是另外做了個name binding 不涉及到修改原object 05/06 21:15
sbrhsieh:aList += bList 不是另外做了 name binding, aList 指涉 05/07 00:06
sbrhsieh:的 list object 長度會增加 05/07 00:15