Срезы массивов
Иногда необходимо выбрать подмножество массива: убрать первые или последние элементы, выбрать только чётные или нечётные элементы.
Конечно, можно проходить по списку с помощью цикла 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, или любым другим необходимым программисту способом.