您每次都需要创建列表,因为您在第一个循环后删除了 2:
In [2]: %%timeit
...: a = [1,2,3]
...: a.remove(2)
...:
10000000 loops, best of 3: 159 ns per loop
你可以看到有10000000
循环,因此通过在您删除的运行时间之外创建列表2
第一个循环,因此在后续运行中没有 2 要删除。
您可以计算列表创建的时间并减去该时间,以获得删除所需时间的近似值。
In [3]: timeit a = [1,2,3]
10000000 loops, best of 3: 89.8 ns per loop
您可以运行一次,但您的计时不会那么准确:
In [12]: a = [1,2,3]
In [13]: timeit -n 1 -r 1 a.remove(2)
1 loops, best of 1: 4.05 µs per loop
timeit magic 命令的选项位于docs:
Options:
-n<N>
:执行给定的语句<N>
循环多次。如果未给出该值,则选择一个拟合值。
-r<R>
:重复循环迭代<R>
次并取得最佳结果。默认值:3
-t
:使用time.time来测量时间,这是Unix上的默认值。此功能测量挂机时间。
-c
:使用 time.clock 来测量时间,这是 Windows 上的默认值,用于测量挂机时间。在 Unix 上,使用 resource.getrusage 来代替并返回 CPU 用户时间。
-p<P>
:使用精度<P>
显示计时结果的数字。默认值:3
-q
:安静,不打印结果。
-o
:返回一个 TimeitResult ,可以存储在变量中进行检查
结果更详细。