2009-06-03 58 views
3

就性能而言,这两个差异有多大?Python中的列表或字典更快吗?

tmp = [] 
tmp.append(True) 
print tmp[0] 

而且

tmp = {} 
tmp[0] = True 
print tmp[0] 
+4

这个比较没有太大的意义......也许你可以详细说明你真正的问题?数据结构的用法是什么? – besen 2009-06-03 03:24:00

回答

23

标准库的timeit模块的设计只是为了回答这些问题!忘记print(这将有喷涌的东西到终端的讨厌的副作用;-)和比较:

$ python -mtimeit 'tmp=[]; tmp.append(True); x=tmp[0]' 
1000000 loops, best of 3: 0.716 usec per loop 
$ python -mtimeit 'tmp={}; tmp[0]=True; x=tmp[0]' 
1000000 loops, best of 3: 0.515 usec per loop 

所以,字典是赢家 - 0.2微秒...... - - !)

+0

不错。那么我想我什么也不担心。谢谢。 – Scott 2009-06-03 03:25:45

+0

不错。字典比列表快。谢谢;) – 2017-11-24 06:06:12

-2

它们在我的测试中是公平的

+0

如果你能提供更多关于你在测试中做了什么的信息,那会很棒。 – 2017-01-04 05:51:24

6

不仅微通常是毫无意义的,我觉得它特别困难和神秘。实际上让你的代码同时变得更慢更复杂是非常容易的。查看this Stack Overflow question的例子,其中最简单,最清晰和最短的Python解决方案也是最快的。

正如其他人在实际测试中所显示的那样,两种选择之间的速度差异非常小。更小的是语义差异。列表和字典不仅仅是同一概念的两种实现,而是针对不同的用途。选择一个更适合你的用途。