Сравнивая время выполнения алгоритмов поиска в списке, я пришел к результату, что list.index()
ОЧЕНЬ намного быстрее, чем простой for in
.Согласно это они оба должны быть O (n).Вот мои результаты в моих тестах:
Простое решение проходит около 350 тестов в течение 3 секунд:
def linear_simple(arr):
for i in range(len(arr)):
if arr[i] == #my searched value#:
return i
Индексное решение проходит все 2000 тестов в течение 3 секунд (на самом деле это делается дажев течение 2 секунд):
def linear_index(arr):
return arr.index( #my searched value# )
Все тестовые массивы генерируются случайным образом.Испытания проводились несколько раз с похожими результатами.
Это означает, что index()
примерно в 9 раз быстрее.Зачем?Разве index()
не просто повторяет один и тот же путь по списку, как for in
?