La dernière fois, il a été confirmé dans une expérience que la référence de l'élément dans la liste était très lente par rapport au dictionnaire et au type d'ensemble. http://qiita.com/cof/items/05f6ffc6d4e5b062aaa9 Cependant, la notation d'inclusion de dictionnaire doit être assez rapide. Je me demandais si ce serait explosif si je faisais une inclusion dans un dictionnaire à chaque fois avant d'y faire référence, alors j'ai cherché.
python2.7 windows7 Intel Core i5 CPU 2.4GHz Mémoire 4,0 Go
Je l'ai vérifié en me référant à 10000 éléments des deux codes suivants et en mesurant l'heure à laquelle il a été exécuté 10 fois. Nombre d'éléments 10000 Élément dans la liste Élément dans {Élément: True pour Élément dans la liste}
Élément de la liste 10.226 Élément dans {Élément: Vrai pour Élément dans la liste} 124.887
Ce n'était pas rapide de faire une inclusion de dictionnaire à chaque fois.
def in_list(n):
ls = [i for i in range(n)]
for i in range(n): i in ls
def in_dict(n):
ls = [i for i in range(n)]
for i in range(n): i in {i:True for i in ls}
def exe(func,num=100):
from timeit import timeit
setup = 'from __main__ import ' + func.split('(')[0]
print "%s: %s" % (func, timeit(func, setup, number=num))
if __name__=='__main__':
q = 10**4
exe('in_list(%d)'%q,10)
exe('in_dict(%d)'%q,10)