0Pricing
Coding Interview Prep · Урок

Находите индекс, а не только значение

Отслеживайте позиции с помощью 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 — локальная установка не требуется.

Все уроки этого курса

  1. Списки, индексы и срезы для CP
  2. Быстро создавайте массивы с включениями
  3. Min, Max, Sum и накопительные итоги
  4. Находите индекс, а не только значение
← Назад к Coding Interview Prep