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

看板Python作者 (sbr)時間15年前 (2009/04/25 14:52), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/9 (看更多)
※ 引述《leondemon (狗狗)》之銘言: : x=range(a) : y=[] : c=0 : A=time() : for i in xrange(b): : y = x + [i] #測試方法二 : c+=1 : print time()-A, c, len(y) : if y is x: : print "True" : else: : print "False" : ========== : 結果: : 7.98008298874 30000 30001 : False : 8.92190909386 30000 30001 : False : 先複製list之後再append 比直接+=快... 你還是沒有了解兩者的差異。你如果真的要比較 append method 與 += operator 的 速度,你要把 += operator 的 right operand 的額外成本扣掉,也就是說你只能 去累計 operator += 本身所需要的時間 for i in xrange(b): temp = [i] #---------- start --------------- y = x + temp #---------- end --------------- ... 再者,list.append 只能 insert 單一值在 list 尾端,operator += 則是 append right operand list 的所有內容,在功能上不是完全對等,不能因為 append 比較 快就認為 operator += 是多餘的。比較 list.extend 跟 operator += 會來的更有 意思。 你使用一個蠻極端的例子 aList += [obj] 速度小於 aList.append(obj) 就論定 list operator+= overloading 似乎沒有存在的意義。那麼是不是也可以說 aList += [1, 2, 3, 4, 5] 比 aList.append(1) aList.append(2) aList.append(3) aList.append(4) aList.appenf(5) 簡單,所以 append 似乎也沒有存在的意義。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.134.233 ※ 編輯: sbrhsieh 來自: 218.173.134.233 (04/25 14:58)

04/25 14:56, , 1F
btw, li += ['two'] 同等於 li.extend(['two'])
04/25 14:56, 1F
文章代碼(AID): #19yhD7mH (Python)
討論串 (同標題文章)
文章代碼(AID): #19yhD7mH (Python)