Beim letzten Mal wurde in einem Experiment bestätigt, dass die Referenz des Elements in der Liste im Vergleich zum Wörterbuch und zum Satztyp sehr langsam war. http://qiita.com/cof/items/05f6ffc6d4e5b062aaa9 Die Wörterbucheinschlussnotation sollte jedoch ziemlich schnell sein. Ich fragte mich, ob es explosiv wäre, wenn ich jedes Mal ein Wörterbuch einfügte, bevor ich mich darauf bezog, also schlug ich es nach.
python2.7 windows7 Intel Core i5 CPU 2.4GHz
Ich habe es überprüft, indem ich mich auf 10000 Elemente der folgenden zwei Codes bezogen und die Zeit gemessen habe, als es 10 Mal ausgeführt wurde. Anzahl der Elemente 10000 Element in Liste Element in {Element: True für Element in Liste}
Element in Liste 10.226 Element in {Element: True für Element in Liste} 124.887
Es war nicht schnell, jedes Mal ein Wörterbuch aufzunehmen.
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)