В Python, анализируя одни и те же операции (одинаковые методы), я замечаю, что в разных типах данных, списка и словаря в этом случае они имеют разную эффективность (Big-O). Например:
# dictionary O(1) vs list O(n)
import timeit
import random
for i in range(10000, 1000001, 20000):
t = timeit.Timer("random.randrange(%d) in x" % i,
"from __main__ import random,x")
# not defining function, use the list x object in our test
x = list(range(i))
tempo_list = t.timeit(number=1000)
x = {j: None for j in range(i)}
tempo_dictionary = t.timeit(number=1000)
print("%d,%10.3f,%10.3f" % (i, tempo_list, tempo_dictionary))
Аналогично, но с оператором del
remove = timeit.Timer("del x[0]", "from __main__ import x")
for i in range(1000000, 100000001, 1000000):
x = list(range(i))
rlist = remove.timeit(number=1000)
x = {j: None for j in range(i)}
rdict = remove.timeit(number=1000)
print("%15.5f, %15.5f" % (rlist, rdict))
Но у меня проблема ...
Traceback (most recent call last):
File "/home/julio/.config/sublime-text 3/Packages/User/Python/example.py", line 9, in <module>
rdict = remove.timeit(number=1000)
File "/usr/lib/python2.7/timeit.py", line 202, in timeit
timing = self.inner(it, self.timer)
File "<timeit-src>", line 6, in inner
KeyError: 0
Объяснение этой ошибки, пожалуйста ...