Короткий ответ
Срез извлекает часть последовательности по правилу sequence[start:stop:step]: start включается, stop не включается, а step задаёт шаг выборки. Механизм работает со строками, списками, кортежами и объектами range.
Как это работает подробнее
Срез можно задать квадратными скобками или функцией slice(), а опущенные параметры получают значения по умолчанию.
- Границы. Начальный индекс включается в результат, конечный — нет, поэтому длина результата зависит от разности границ и шага.
- Значения по умолчанию. При пропуске
startберётся 0,stop— длина последовательности,step— 1. - Частые приёмы.
s[:3]— первые три элемента,s[3:]— всё после четвёртого,s[::2]— каждый второй,s[::-1]— разворот. - Копия. Срез списка создаёт новый список, а не «окно» над исходным, поэтому изменения в срезе не затрагивают оригинал.
Пример кода
Извлечение части списка
l = [10, 20, 30, 40, 50]
res = slice(1, 4)
print(l[res]) # [20, 30, 40]
print(l[1:4]) # [20, 30, 40]
print(l[::2]) # [10, 30, 50]
print(l[::-1]) # [50, 40, 30, 20, 10]
s = 'Hello World!'
print(s[2:5]) # lloЧто использовать на практике
- Крайние части. Бери начало и конец последовательности срезами
s[:n]иs[-n:], не вычисляя длину. - Разворот. Разворачивай последовательность срезом
s[::-1]. - Шаг выборки. Для выборки каждого N-го элемента используй срез с шагом вместо цикла.