Срезы списка – более продвинутый способ получения значений из списка. Чтобы сделать простой срез, необходимо индексировать список, используя два целых числа, разделенных двоеточием.

Программа вернет новый список, содержащий все значения со старого списка в заданном диапазоне.

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[2:6])
print(squares[3:8])
print(squares[0:1])

Подобно аргументам range, первый индекс в срезе будет включен в результаты, а второй нет.

Если первый индекс в срезе опущен, программа выбирает с начала списка.
Если второй в срезе опущен – программа выбирает до конца списка.

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[:7])
print(squares[7:])

Срезы списков могут иметь третий параметр, задающий шаг. Тогда будут возвращаться только определенные значения со списка.

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[::2])
print(squares[2:8:3])

[2:8:3] вернет элементы со 2-го индекса по 8 с шагом 3.

Отрицательные значения также могут использоваться для получения срезов (и обычной индексации списков). Когда используются отрицательные значения для первого и второго параметра среза (или обычного индекса), программа считает с конца списка.

squares = [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
print(squares[1:-1])

Если отрицательное значение присвоить шагу, срез делается в обратном направлении.
Распространенный способ обратить список – использовать выражение [::-1].