← Все вопросы

Как работают срезы в Python и как их использовать для работы со строками и списками?

Задан 1 месяц назад34 просмотров2 ответа
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] без всяких проверок длины.

Ваш ответ

Войдите, чтобы ответить на вопрос.