← Все вопросы
Как работают срезы в Python и как их использовать для работы со строками и списками?
1
Что вернет код my_list[1:4] или my_string[::-1]? Как получить каждый второй элемент списка? Как скопировать список с помощью среза? Приведите 3 разных примера использования срезов.
2 ответа
2
Срез — это последовательность[старт:стоп:шаг], где стоп не включается. Отсюда все ответы:
my_list = [10, 20, 30, 40, 50]
my_list[1:4] # [20, 30, 40] — индексы 1, 2, 3; четвёртый не вошёл
'привет'[::-1] # 'тевирп' — шаг -1 идёт с конца, разворот строки
my_list[::2] # [10, 30, 50] — каждый второй, начиная с нулевого
my_list[:] # полная поверхностная копия списка
Любую часть можно опустить: старт по умолчанию — начало, стоп — конец. Отрицательные индексы считают с конца: my_list[-2:] — последние два, my_list[:-1] — всё, кроме последнего.
Как срезы выглядят в реальном коде:
filename = 'report_2026.csv'
name = filename[:-4] # 'report_2026' — отрезать расширение
line = 'id;name;city'
fields = line.split(';')[1:] # все поля после id
tail = logs[-50:] # последние 50 записей лога
1
Еще одно свойство, которое экономит нервы: срез никогда не бросает IndexError. [1, 2, 3][10:20] - просто пустой список, 'abc'[:100] - вся строка целиком. Поэтому «первые N элементов» пишется lst[:n] без всяких проверок длины.
Ваш ответ
Войдите, чтобы ответить на вопрос.