Re: [問題] List擴編的處理速度...

看板Python作者 (生の直感、死の予感)時間16年前 (2009/04/25 03:15), 編輯推噓4(404)
留言8則, 2人參與, 最新討論串3/9 (看更多)
: : 如果修改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)

04/25 03:51, , 1F
謝謝指教 但 x += [1,2,3] 應該比x = x + [1,2,3]快很多
04/25 03:51, 1F

04/25 03:53, , 2F
所以似乎不能說是簡寫
04/25 03:53, 2F

04/25 03:56, , 3F
速度上是list.append(i) > list+=[i] >>> list=list+[i]
04/25 03:56, 3F

04/25 03:57, , 4F
這樣看來list += [i] 似乎除了coding方便外 較無用處
04/25 03:57, 4F

04/25 04:00, , 5F
而且我第二篇測試 先複製list再append也比list去加快
04/25 04:00, 5F

04/25 04:03, , 6F
所以用加法去合併擴建list 似乎不是好方法
04/25 04:03, 6F

04/25 04:04, , 7F
不過好處的話 是閱讀和coding方便 :)
04/25 04:04, 7F

04/25 04:46, , 8F
語意不同不能這樣比吧? :(
04/25 04:46, 8F
文章代碼(AID): #19yW_RNN (Python)
討論串 (同標題文章)
文章代碼(AID): #19yW_RNN (Python)