Найти в Дзене
Удалёнка

Применение срезов списков без указания индексов в 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