Список или словарь быстрее в Python? - PullRequest
4 голосов
/ 03 июня 2009

Насколько разница между этими двумя показателями и производительностью?

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

И

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

Ответы [ 3 ]

24 голосов
/ 03 июня 2009

Модуль 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 микросекунды ...! -)

6 голосов
/ 03 июня 2009

Мало того, что микрооптимизация обычно не имеет смысла вообще, я нахожу это особенно трудным и загадочным для Питона в частности. Это очень легко сделать ваш код одновременно медленнее и сложнее. См. этот вопрос переполнения стека , где приведен пример, в котором самые простые, ясные и самые короткие решения Python также оказались самыми быстрыми.

Как показали другие тесты, разница в скорости между двумя вариантами довольно мала. Что меньше, так это семантическая разница. Списки и словари - это не просто две реализации одной и той же концепции, но они предназначены для разных целей. Выберите тот, который лучше подходит для вашего использования.

0 голосов
/ 03 июня 2009

они справедливы в моем тестировании

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...