Python中的列表或字典是否更快?

Sco*_*ott 4 python data-structures

就性能而言,这两者有多大区别?

tmp = []
tmp.append(True)
print tmp[0]
Run Code Online (Sandbox Code Playgroud)

tmp = {}
tmp[0] = True
print tmp[0]
Run Code Online (Sandbox Code Playgroud)

Ale*_*lli 24

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
Run Code Online (Sandbox Code Playgroud)

所以,dict是胜利者 - 0.2微秒......! - )


Joh*_*n Y 6

微观优化通常不会毫无意义,我发现对于Python来说尤其困难和晦涩难懂.实际上,使代码同时变得更慢,更复杂是非常容易的.请参阅此Stack Overflow问题,其中最简单,最清晰,最短的Python解决方案也是最快的.

正如其他人通过实际测试所表明的那样,两种选择之间的速度差异非常小.不那么小的是语义差异.列表和词典不仅仅是相同概念的两种实现,而是用于不同的用途.选择一个更适合您使用的产品.