Срез списка в Python

Вероятно, вы это уже знаете, но на всякий случай повторим основы.

В Python есть такое понятие как срезы списков. Это встроенный инструмент языка, позволяющий работать с определенной частью списка. Синтаксис среза следующий:

 some_list[START:STOP:STEP]

START — индекс элемента, с которого должна начаться выборка, STOP — индекс элемента, перед которым диапазон выборки должен закончиться (т.е. элемент под этим индексом не входит в выборку), STEP — шаг (по умолчанию равен 1).

В следующем примере указаны индексы START и STOP, а шаг опущен.

>>> a = [1, 2, 3, 4, 5, 6, 7, 8]
>>> a[1:4]
[2, 3, 4]

Но индексы элементов можно и вообще не указывать, что позволяет делать интересные вещи, например:

1. Очистить список от элементов:

>>> lst = [1, 2, 3, 4, 5]
>>> del lst[:]
>>> lst
[]

2. Заменить все элементы, не создавая нового объекта списка:

>>> a = lst
>>> lst[:] = [7, 8, 9]
>>> lst
[7, 8, 9]
>>> a
[7, 8, 9]
>>> a is lst
True

3. Создать поверхностную копию списка:

>>> b = lst[:]
>>> b
[7, 8, 9]
>>> b is lst
False