Срезы массивов

Иногда необходимо выбрать подмножество массива: убрать первые или последние элементы, выбрать только чётные или нечётные элементы.

Конечно, можно проходить по списку с помощью цикла for, в этом цикле писать условия, и записывать нужный диапазон значений в новый массив. Однако в Python есть инструмент, с помощью которого это делать проще.

Этот инструмент называется срезы (slice).

Синтаксис срезов:

array[start:stop:step]

Похоже на взятие по индексу, но здесь у нас вместо одного - 3 целых числа. Начать с индекса start (включая его), закончить на индексе stop (не включая его), с шагом step.

Например, возьмём срез со второго по третий элемент с шагом 1:

>>> array = [1, 4, 3, 3, -2]
>>> array[1:3:1]
[4, 3]

Каждый из аргументов может быть опущен. Если опущен start, то он полагается равным нулю; stop - длине массива, step - единице. Срез совсем без аргументов вернёт просто копию массива:

>>> array = [1, 4, 3, 3, -2]
>>> array[:]
[1, 4, 3, 3, -2]

Выбрать чётные и нечётные элементы:

>>> array = [1, 4, 3, 3, -2]
>>> array[::2]
[1, 3, -2]
>>> array[1::2]
[4, 3]

Аргументы могут быть отрицательными: в случае со start и stop это будет означать нумерацию с конца массива; В случае со step элементы среза будут идти в обратном порядке:

>>> array = [1, 4, 3, 3, -2]
>>> array[::-1]
[-2, 3, 3, 4, 1]

И, поскольку срез списка возвращает список, его можно использовать: присваивать переменной, итерировать в цикле for или while, или любым другим необходимым программисту способом.