Как найти индекс конкретного числа в списке? Python

К примеру у нас есть список x = [1, 4, 6, 4, 6, 7, 8], как найти индекс числа 7?


Ответы (3 шт):

Автор решения: Duracell

Если вас интересует именно list, вам нужна функция index:

print([1, 2, 3, 4, 5, 6, 7].index(7))
→ Ссылка
Автор решения: Алексей Р

Если нужных чисел в списке несколько, можно их индексы найти так:

x = [1, 4, 6, 4, 6, 7, 8, 7, 9]
indexes = [i for i,d in enumerate(x) if d == 7]
print(indexes)
[5, 7]
→ Ссылка
Автор решения: Ret7020

Думаю, что решения с методом index вам поможет решить задачу, но хотелось бы подметить несколько важных моментов. Метод index работает за O(n). Что не самый плохой результат, но всё же не идеальный. Для более эффективного поиска элемента в списке можно применить, так называемый "бинарный поиск".

Wiki

Его худшая асимптотика - O(log n), что намного лучше, чем у index. Но для корректной работы бинарного поиска необходимо, чтобы список был отсортирован. Т.е. если в вашей задаче дан заведомо отсортированный список, то стоит обратить внимание на бинарный поиск.

В python есть стандартная библиотека, реализующая бинарный поиск - bisect.

Доки

→ Ссылка