Что такое индексирование и отрицательные индексы?

Индексирование в Python — это доступ к элементам последовательности (строки, списка, кортежа и т.п.) по их позиции с помощью квадратных скобок: seq[index], при этом индексация начинается с 0. Отрицательные индексы позволяют обращаться к элементам с конца: -1 — последний элемент, -2 — предпоследний и так далее.

Что такое индексирование? В Python многие типы данных являются последовательностями: строки (str), списки (list), кортежи (tuple), иногда диапазоны (range) и другие. Индексирование — это способ получить конкретный элемент такой последовательности по его позиции.

Базовые правила:

Индексация в Python начинается с 0: первый элемент — индекс 0, второй — 1, третий — 2 и т.д.

Доступ к элементу осуществляется через квадратные скобки:

items = ["a", "b", "c"]
items[1]  # "b"

Если обратиться к индексу за пределами длины последовательности, будет IndexError. На собеседовании от вас ждут, что вы уверенно объясните нумерацию с нуля и покажете, что умеете работать с индексами в списках и строках.

Что такое отрицательные индексы?

Кроме положительных индексов, Python поддерживает отрицательное индексирование. Это удобный способ обратиться к элементам с конца последовательности, не рассчитывая вручную её длину.

Правила отрицательных индексов:

-1 — последний элемент;

-2 — предпоследний;

-3 — третий с конца и так далее до -len(seq).

Пример:

numbers = [10, 20, 30, 40, 50]
numbers[-1]  # 50, последний элемент
numbers[-2]  # 40, предпоследний элемент
numbers[-3]  # 30

Это особенно полезно в backend‑коде, когда вы работаете с динамическими списками (записи логов, история операций, последние элементы очереди) и хотите взять «последний» элемент, не зная точную длину.

Индексы и срезы

От индексов логично перейти к срезам, потому что на собеседованиях эти темы часто идут вместе. Индекс: возвращает один элемент, например items[2]. Срез возвращает подпоследовательность, например, items[1:4] — элементы с индексами 1, 2, 3.

Отрицательные индексы работают и в срезах:

numbers = [10, 20, 30, 40, 50]
numbers[-2:]   # [40, 50] — последние два элемента
numbers[:-1]   # [10, 20, 30, 40] — всё, кроме последнего

Важно помнить об общем правиле срезов: правая граница не включается, независимо от того, положительный или отрицательный индекс используется.

Как сформулировать ответ на собеседовании?

Хороший устный ответ может звучать так. Индексирование — это доступ к элементу последовательности по его позиции через квадратные скобки, при этом Python использует нумерацию с нуля. Отрицательные индексы позволяют обращаться к элементам с конца: -1 — последний элемент, -2 — предпоследний и так далее. Это удобно, когда заранее неизвестна длина списка или строки.

На TeoBrain мы закрепляем эту тему через задачи: от простого доступа к элементам и разворота строк до более практичных сценариев — работы с последними записями логов, очередями запросов и обрезкой данных по концам списка.

Назад к списку