2009-06-03 7 views
3

Quelle différence y a-t-il entre ces deux performances?Une liste ou un dictionnaire est-il plus rapide en Python?

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

Et

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

Il n'y a pas beaucoup de points dans cette comparaison ... peut-être que vous pouvez élaborer sur votre vrai problème? Quelle est l'utilisation des structures de données? – besen

Répondre

23

Le module timeit dans la bibliothèque standard est conçu juste pour répondre à ces questions! Oubliez le print (ce qui aurait pour effet secondaire méchant de choses crachant à votre terminal ;-) et comparer:

$ 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 

Ainsi, le dict est le gagnant - de 0,2 microsecondes ... -)

+0

Nice. Je suppose que je m'inquiétais pour rien alors. Merci. – Scott

+0

Nice. Dict est plus rapide que la liste. Merci;) –

-2

ils sont équitables dans mes tests

+0

Si vous pouviez fournir plus d'informations sur ce que vous avez fait dans votre test, ce serait génial. –

6

Non seulement la micro-optimisation est généralement inutile, mais elle est particulièrement difficile et mystérieuse pour Python en particulier. Il est très facile de rendre votre code simultanément plus lent et plus compliqué. Voir this Stack Overflow question pour un exemple où les solutions Python les plus simples, les plus claires et les plus courtes se sont avérées être les plus rapides.

Comme d'autres l'ont montré avec des tests réels, la différence de vitesse entre vos deux choix est assez faible. Ce qui est moins petit, c'est la différence sémantique. Les listes et les dictionnaires ne sont pas simplement deux implémentations du même concept, mais sont destinés à différents usages. Choisissez celui qui correspond le mieux à votre utilisation.

+0

Eh bien, ce cas particulier, je peux utiliser dict ou liste. Le seul avantage que l'on puisse avoir sur l'autre est la performance, d'où la question. Eh bien, les dicts sont aussi plus propres. Il est clair quel index est assigné. J'ai choisi la dict mais il y avait cette question lancinante. – Scott

Questions connexes