Re: [問題] List擴編的處理速度...
※ 引述《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
04/25 14:56, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 9 篇):