AKX*_*AKX 30
还有一种方法可以找出它是如何完成的 在Google Code Search上查找 如果您不想自己下载源代码,请查看GitHub上的源代码.
static Py_ssize_t list_length(PyListObject *a)
{
return a->ob_size;
}
Run Code Online (Sandbox Code Playgroud)
big*_*ose 10
编写程序,使其优化清晰,易于维护.打电话给你的节目更清楚len(foo)
吗?然后这样做.
你担心时间吗?使用timeit
标准库中的模块来测量所花费的时间,并查看它是否在您的代码中是重要的.
与大多数人一样,您可能会错误地猜测程序的哪些部分最慢.避免猜测的诱惑,而是测量它以找出答案.
请记住,用唐纳德克努特的话说,过早的优化是所有邪恶的根源.只关注你测量速度的代码速度,知道它是否值得改变其工作方式的成本.
这个问题已经回答了(len
是O(1)),但是这里有你自己检查的方法:
$ python -m timeit -s "l = range(10)" "len(l)"
10000000 loops, best of 3: 0.119 usec per loop
$ python -m timeit -s "l = range(1000000)" "len(l)"
10000000 loops, best of 3: 0.131 usec per loop
Run Code Online (Sandbox Code Playgroud)
是的,不是真的慢.