2009-06-03 24 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解決方案也是最快的。

正如其他人在實際測試中所顯示的那樣,兩種選擇之間的速度差異非常小。更小的是語義差異。列表和字典不僅僅是同一概念的兩種實現,而是針對不同的用途。選擇一個更適合你的用途。