list.pop()函数操作头部与尾部的计时试验

代码呈现:

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()是平坦的常数
原文地址:https://www.cnblogs.com/Noturns/p/13341633.html