代码呈现:
from timeit import Timer
l1 = list(range(2000000))
l2 = list(range(2000000))
popzero = Timer("l1.pop(0)", "from __main__ import l1")
print("end:%f sec" % popzero.timeit(number=1000))
popend = Timer("l2.pop()", "from __main__ import l2")
print("head:%f sec" % popend.timeit(number=1000))
结果:
end:1.150756 sec
head:0.000062 sec
探究列表的大小对两种操作的影响:
from timeit import Timer
popzero = Timer("l1.pop(0)", "from __main__ import l1")
popend = Timer("l2.pop()", "from __main__ import l2")
print(' '*8+"pop(0)************pop()")
for i in range(1000000, 10000001, 1000000):
l1 = list(range(i))
head = popzero.timeit(number=1000)
l2 = list(range(i))
end = popend.timeit(number=1000)
print("%15.5f %15.5f" % (head, end))
结果:
pop(0)************pop()
0.44019 0.00006
1.16504 0.00008
1.72717 0.00007
2.40732 0.00008
3.08073 0.00008
3.77108 0.00008
4.46222 0.00007
5.10130 0.00006
5.79160 0.00006
6.41642 0.00007
#可知,pop(0)呈线性增长的趋势,pop()是平坦的常数