我构建了一个小测试,看看pop、del和remove在运行时是否存在差异。我希望remove和pop/del之间有区别,因为remove搜索值并删除它,而pop/del删除索引。
测试:
import time
list1 = []
list2 = []
list3 = []
for num in xrange(100000):
list1.append(num)
list2.append(num)
list3.append(num)
print len(list1)
ticks = time.time()
for num in xrange(100000):
list1.pop()
print "list 1 is over", list1
print time.time() - ticks
print "------------------------------------------"
print len(list2)
ticks = time.time()
for num in xrange(99999, -1, -1):
del list2[num]
print "list 2 is over", list2
print time.time() - ticks
print "------------------------------------------"
print len(list3)
ticks = time.time()
for num in xrange(0,100000):
list3.remove(num)
print "list 3 is over", list3
print time.time() - ticks
结果是:
100000
list 1 is over []
0.0269999504089
------------------------------------------
100000
list 2 is over []
0.0169999599457
------------------------------------------
100000
list 3 is over []
2.55900001526
正如你所看到的,移除的效果要差得多(如预期),但是弹出的速度比del慢50%-60%(取决于运行情况)。
为什么?(我试图搜索它(我猜是实现的),但找不到原因。可能是因为我是怎么写的?)
最佳答案
根据这篇文章中的一条评论,pop被转换成一个函数调用,而del充当一个原语,这就是pop比del慢的原因
关于python - 在运行时弹出,删除和删除之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29335140/