Находите индекс, а не только значение
Отслеживайте позиции с помощью enumerate
«Находите индекс, а не только значение» — бесплатный урок Coding Interview Prep на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Coding Interview Prep, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Coding Interview Prep содержит 4 уроков всего.
Позиции имеют значение
Часто ответом оказывается не значение, а его позиция. В задачах часто требуется индекс с отсчётом от 1 или от 0, поэтому отслеживайте позиции.
a = [4, 1, 7, 3]Поиск с помощью .index()
a.index(x) возвращает позицию первого совпадения. Записать это легко, но метод просматривает элементы слева направо за O(n).
pos = a.index(7) # 2Отсутствующие значения вызывают ошибки
Если значение отсутствует, .index() вызывает ValueError и программа завершается с ошибкой. Если Вы не уверены, сначала проверьте наличие значения.
if x in a:
pos = a.index(x)Цикл с enumerate
enumerate на каждом шаге передаёт индекс и значение вместе — это удобный способ отслеживать позиции при просмотре массива.
for i, v in enumerate(a):
print(i, v)Начало enumerate с единицы
Многие проверяющие системы требуют позиции с отсчётом от 1. Передайте в enumerate параметр start=1, чтобы первый индекс был равен 1, как в условии задачи.
for i, v in enumerate(a, start=1):
...Индекс максимума
Чтобы найти, где находится максимум, просматривайте массив и запоминайте лучший индекс: один только max(a) возвращает лишь значение.
best = 0
for i, v in enumerate(a):
if v > a[best]:
best = iУдобный поиск максимума
Компактный приём: сопоставьте каждому индексу его значение и найдите максимум по значению. Диапазон сразу даёт нужную позицию.
best = max(range(len(a)), key=lambda i: a[i])Соберите все совпадающие индексы
Нужна каждая позиция заданного значения? Включение по enumerate соберёт все совпадения в одной строке.
idx = [i for i, v in enumerate(a) if v == 7]Отображение значения на индекс
Для повторных поисков один раз создайте словарь, сопоставляющий значение и индекс. Каждый последующий поиск тогда занимает O(1).
where = {v: i for i, v in enumerate(a)}С дубликатами нужна осторожность
Словарь значений и индексов сохраняет только последнее вхождение. Если дубликаты важны, используйте список для каждого ключа или enumerate.
where = {}
for i, v in enumerate(a):
where.setdefault(v, []).append(i)Преобразование между системами индексации
Следите за основанием: если Вы сохранили индексы с отсчётом от 0, а вывести нужно индексы с отсчётом от 1, прибавьте единицу. Смешение оснований — незаметная причина неверного ответа.
print(pos + 1) # 0-based to 1-basedБыстрая проверка
Вы хотите получать позиции с отсчётом от 1 во время цикла. Что нужно написать?
Повторение: отслеживание позиций
Теперь Вы умеете находить один индекс, индекс максимума и все совпадения, а также надёжно сопоставлять значения с позициями. enumerate — Ваш надёжный инструмент отслеживания позиций. 🎯
Часто задаваемые вопросы
Урок «Находите индекс, а не только значение» бесплатный?
Да — полный текст урока «Находите индекс, а не только значение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Coding Interview Prep, подпишись на CoddyKit PRO. Курс Coding Interview Prep содержит 4 уроков всего.
Чему я научусь в уроке «Находите индекс, а не только значение»?
Отслеживайте позиции с помощью enumerate Ты практикуешь Coding Interview Prep с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Coding Interview Prep?
Предыдущий опыт не требуется. Coding Interview Prep на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Находите индекс, а не только значение»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Coding Interview Prep?
Да. Каждый урок Coding Interview Prep включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Списки, индексы и срезы для CP
- Быстро создавайте массивы с включениями
- Min, Max, Sum и накопительные итоги
- Находите индекс, а не только значение