ЯдроКодаподготовка к экзаменам
Учебная платформа

Загружаем материалы

Подготавливаем материалы и навигацию по разделу.

Индексы и срезы строк в Python

Автор: · Обновлено

Слева нумерация начинается с 0, справа доступны отрицательные индексы: -1 обозначает последний символ. Срез text[start:stop:step] создаёт новую строку и не включает позицию stop.

Каждый символ строки имеет индекс. Слева нумерация начинается с 0, справа доступны отрицательные индексы: -1 обозначает последний символ. Срез text[start:stop:step] создаёт новую строку и не включает позицию stop.

Одна строка — разные представления

word = 'python'

print(word[0])
print(word[-1])
print(word[1:4])
print(word[::-1])

Результат:

p
n
yth
nohtyp

Срез 1:4 берёт индексы 1, 2 и 3. Пустые границы означают начало или конец, а шаг -1 идёт справа налево.

Индекс строг, срез терпим

Обращение word[20] вызывает IndexError, потому что такой позиции нет. Срез word[:20] безопасно вернёт всю строку. Перед прямым доступом по вычисленному индексу проверьте 0 <= index < len(word).

Строки неизменяемы: присваивание word[0] = 'P' недопустимо. Новое значение строят, например, как 'P' + word[1:]. Типичная ошибка — считать первый символ индексом 1 или ожидать включения правой границы. Выпишите индексы над буквами короткого слова, прежде чем чинить формулу наугад.

Инициалы и окончание

Прочитайте слово длиной не меньше двух символов. Выведите первые две буквы, последние две и строку без первого и последнего символа. Для «программа» ожидаются «пр», «ма» и «рограмм». Затем проверьте слово из двух букв и объясните, почему средний срез пуст. Дополнительно определите, является ли введённая строка палиндромом, сравнив её с обратным срезом.

Границы срезов

Для слова «алгоритм» предскажите результаты срезов [:3], [3:], [1:7:2], [-3:] и [20:30]. Подтвердите, что последний безопасно пуст, тогда как прямой индекс 20 вызывает ошибку. Постройте функцию safe_char(text, index), которая возвращает символ либо None после проверки диапазона, включая отрицательные индексы выбранного контракта. Затем соберите новое слово заменой первого символа, не пытаясь изменить исходную строку. Зафиксируйте разницу: индекс выбирает один существующий элемент, срез описывает границы новой последовательности и мягко обрезается по длине.

Практикум: срезы и проверка палиндрома

Для строки алгоритм получите первые три символа, последние три, каждый второй и обратную запись. Для каждого среза подпишите начало, исключённый конец и шаг. Затем нормализуйте фразу без пробелов и регистра и сравните её с обратной строкой для проверки палиндрома. Протестируйте пустую строку, один символ и строку нечётной длины. Попробуйте индекс за пределами и такой же срез: зафиксируйте различие между IndexError и безопасным усечением диапазона.

Контрольная точка

Что означает отрицательный индекс и почему text[-1] не равен срезу text[-1:] по типу результата? Предскажите оба значения для непустой строки.

Частые вопросы

Срез изменяет исходную строку?

Нет. Строки неизменяемы, а срез создаёт новое строковое значение. Чтобы сохранить преобразование, его связывают с новым или прежним именем явно.

Источники