Что такое индексирование и отрицательные индексы?
Индексирование в 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 мы закрепляем эту тему через задачи: от простого доступа к элементам и разворота строк до более практичных сценариев — работы с последними записями логов, очередями запросов и обрезкой данных по концам списка.