Здесь дель оператор приурочен:времени, сколько времени требуется, чтобы сделать в операторе
from timeit import Timer
def build_list(n):
return list(range(n)) # create list of 1 to n
def build_dict(n): # build dict = { 0:"0", 1:"1", 2:"2", ... n:"n" }
return {i: str(i) for i in range(n)} # from last listing in this chapter
def inx(x,n): # do in front, middle, end, and not found
str(0) in x
str(n//2) in x
str(n-1) in x
str("a") in x # not in it
timeList = Timer(
"inx(x,n)",
"from __main__ import n,build_list,inx; x = build_list(n)")
timeDict = Timer(
"inx(x,n)",
"from __main__ import n,build_dict,inx; x = build_dict(n)")
# get min of 5 runs of 5
print("N", "\t", "List", "\t", "Dict")
for size in range(1000, 100000+1, 5000): # sizes to graph for n:
n = size
list_secs = timeList.repeat(5,5)
dict_sect = timeDict.repeat(5,5)
print(n, "\t", min(list_secs), "\t", min(dict_sect))
На этот раз это время, сколько времени требуется, чтобы сделать в операторе и не дель оператор. Какие коды необходимо изменить и добавить?
Эти тайминги для диктатора в течение некоторого времени немного вводят в заблуждение, так как время, затрачиваемое на построение каждой из тестируемых строк, является значительным по сравнению с выполнением поиска dict. Чтобы увидеть это, удалите 'in x' из каждой строки в' inx (x, n) '. Полученные времена для просто вызова функции 'inx()' и построения строк составляют примерно 50% времени для выполнения полного теста. –
Хмм, я вижу, но связано ли это с тем, как в операторе? – devacris14
Да и нет. :) Вышеприведенный код, безусловно, показывает, что 'in' намного быстрее на dicts, чем на списки того же размера. Но времена, о которых он сообщает, не являются «нулями» в операции 'in' - эти времена также включают время, которое требуется для вызова самой функции' inx() ', плюс время, необходимое для построения 4 строк. И этот материал занимает примерно такое же количество времени, что и фактические операции 'in' на dict. Поэтому числа, которые печатаются в коде, не должны восприниматься как точное указание относительной разницы в скорости между выполнением 'in' в списке по сравнению с dict. –