为什么字典在Python中比列表更快?

2024-03-29 10:38:07 发布

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

>>> timeit.timeit('test.append("test")', setup='test = []')
0.09363977164165221
>>> timeit.timeit('test[0] = ("test")', setup='test = {}')
0.04957961010914147

我甚至用一个循环再次尝试,同样的事情:

^{pr2}$

为什么列表慢了?在


Tags: test列表setup事情appendtimeitpr2
1条回答
网友
1楼 · 发布于 2024-03-29 10:38:07

首先,list.append和{}都是O(1)平均情况。当然,它们会有不同的系数,但实际上并没有任何全面的理由说其中一个会更快。系数也可能根据实现细节而改变。在

其次,更公平的比较是去掉属性解析开销:

>>> timeit.timeit('test[0] = ("test")', setup='test = {}')
0.0813908576965332
>>> timeit.timeit('test_append("test")', setup='test = []; test_append = test.append')
0.06907820701599121

在实例上查找方法名是相对昂贵的,当您看到一个非常便宜的操作时,例如append。在

我还看到,一旦里面有一些数据,列表的速度会一直快一点。这个例子是python 3.5.2:

^{pr2}$

相关问题 更多 >