作者Lucemia (生の直感、死の予感)
看板Python
標題Re: [問題] List擴編的處理速度...
時間Sat Apr 25 03:15:38 2009
:
: 如果修改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