作者sbrhsieh (sbr)
看板Python
标题Re: [问题] List扩编的处理速度...
时间Sat Apr 25 14:52:53 2009
※ 引述《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)
1F:推 keitheis:btw, li += ['two'] 同等於 li.extend(['two']) 04/25 14:56