看板 Python 關於我們 聯絡資訊
: : 如果修改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 append 與 += 意義上完全就不一樣 x += [1,2,3] 是 x = x + [1,2,3] 的簡寫 和append 比一開始就少了一個 list 生成([1,2,3])的 overhead 要比較也是與 list.extend : 推 sbrhsieh:list += [i] 多一個成本在 [i] 這個 list construction 04/25 00:44 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 154.20.36.163 ※ 編輯: Lucemia 來自: 154.20.36.163 (04/25 03:19) ※ 編輯: Lucemia 來自: 154.20.36.163 (04/25 03:23)
leondemon:謝謝指教 但 x += [1,2,3] 應該比x = x + [1,2,3]快很多 04/25 03:51
leondemon:所以似乎不能說是簡寫 04/25 03:53
leondemon:速度上是list.append(i) > list+=[i] >>> list=list+[i] 04/25 03:56
leondemon:這樣看來list += [i] 似乎除了coding方便外 較無用處 04/25 03:57
leondemon:而且我第二篇測試 先複製list再append也比list去加快 04/25 04:00
leondemon:所以用加法去合併擴建list 似乎不是好方法 04/25 04:03
leondemon:不過好處的話 是閱讀和coding方便 :) 04/25 04:04
godfat:語意不同不能這樣比吧? :( 04/25 04:46