In Python, analyzing same operations(same methods) i observe that in different types of data, list and dictionary in this case, they have different efficiency (Big-O). For example:
# 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))
Similarly but with the operator 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))
But I have a problem...
Traceback (most recent call last):
File "/home/jrr/.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