从空lis弹出

2024-04-24 10:18:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想计算一下“砰”的时间。 这是密码。在

x=list(range(10000))
popz=timeit.Timer("x.pop(0)","from __main__ import x")
print (popz.timeit())
IndexError: pop from empty list

我怎样才能从列表的开头得到流行音乐的时间呢。在


Tags: fromimport密码列表main时间rangepop
3条回答

就这样试试吧

>>> import timeit
>>> x=list(range(10000))
>>> timeit.timeit("x.pop(0)","from __main__ import x", number=len(x))
0.01635134604293853

默认情况下,^{} method运行一百万次。然而,你的单子只有10000条。因此,当timeit运行时,第一个10000次将愉快地弹出,但是{}迭代将失败。可以显式设置次数:

popz.timeit(n=10000)

但是。。。这是一个非常棘手的计时情况,因为您希望计算出.pop所需的时间,但是列表的大小是不断变化的。如果您正在寻找渐近性能,您可能可以验证.pop(0)具有O(N)的渐近性能。然而,具体的时间将很难到来,因为您要么需要计算创建列表所需的时间量,要么与.pop一起计时,您的列表会不断变化。这两个都不理想。。。但我想这就是试图对非幂等方法计时的问题。。。在

也许你可以尝试在pop之前和之后定义的两个变量(datetime)之间使用不同的值。在

我不确定,但可能是这样) 但有一个错误,它等于第二个变量赋值的时间(在“pop”之后)。在

import datetime
a = datetime.datetime.now()
# ...wait a while...
b = datetime.datetime.now()
print(b-a)

嗯,我不确定这个例子中时间增量的准确性。在

相关问题 更多 >