Python: нарезка итерируемых объектов

Термин нарезка в программировании обычно относится к получению подстроки, подкортежа или подсписка из строки, кортежа или списка соответственно.
Python предлагает множество простых способов разрезать не только эти три, но и любые итерируемые объекты. Итерация, как следует из названия, любой объект, который может повторяться.
В этой статье мы рассмотрим все, что вам нужно знать о нарезке списков в Python.
Нарезка списка в Python
Есть несколько способов разрезать список, наиболее распространенным из которых является использование оператора : со следующим синтаксисом:
Параметр start представляет собой начальный индекс, end это конечный индекс, и step это количество элементов в шаге.
Если step явно не указано, используется значение по умолчанию 1 . Обратите внимание, что элемент с индексом start будет включен в результирующий подсписок, а элемент с индексом end не будет. Первый элемент списка имеет индекс 0 .
Пример без параметра step :
Это должно напечатать:
Для того, чтобы получить слова через одно, установите step на 2 :
Если step нет в списке, подсписок будет начинаться с начала. Аналогичным образом, если end нет в списке, подсписок будет заканчиваться концом исходного списка:
Этот фрагмент кода распечатывает:
Нахождение начала и конца списка с помощью среза
Обозначение среза может также использоваться с отрицательной индексацией. Отрицательное индексирование работает так же, как обычное индексирование, за исключением того факта, что оно начинает индексирование с последнего элемента, имеющего индекс -1 .
Его можно использовать для получения начала и конца списка заданной длины. Голова списка — это подсписок, который содержит первые n элементы списка, а хвост — подсписок, содержащий последние n элементы.
Давайте продолжим и разделим хвост и начало списка:
Использование нотации среза для переворота списка
Даже параметр step может быть отрицательным. Если мы установим отрицательное значение, результирующий список будет перевернут со значением step . Вместо того, чтобы идти вперед, мы делаем шаг назад, от конца списка к началу и включаем следующие элементы:
Замена элементов подсписка нотацией среза
Обозначение среза может использоваться для присвоения новых значений элементам определенного подсписка. Например, давайте попробуем заменить хвост и начало списка:
Замена каждого n-го элемента списка срезной нотацией
Простой способ заменить каждый n-й элемент списка — установить для параметра step значение n в нотации среза:
Вывод
Нарезать любую последовательность в Python легко, просто и интуитивно понятно. Отрицательная индексация предлагает простой способ получить первые или последние несколько элементов последовательности или изменить ее порядок.
В этой статье мы рассмотрели, как применить нотацию фрагментов к спискам в Python.
Функция slice() — срез списка в Python
Чтобы нарезать список в Python, используйте встроенную функцию slice().
Эта функция возвращает объект среза и мы можем использовать его, чтобы нарезать список в Python. Все, что нам нужно сделать, это передать объект среза в виде индекса в квадратных скобках после переменной списка. Это выражение возвращает нарезанный список.
Ниже приведен пример фрагмента кода для фрагментации списка с определенным значением для параметра остановки в функции фрагмента.
Ниже приведен пример фрагмента кода для нарезки списка с определенным значением для запуска, остановки и необязательным параметром шага в функции фрагмента.
Пример 1: с определенной конечной позицией
В этом примере мы подготовим объект-слайс с определенной конечной позицией stop = 5 и будем использовать этот объект-слайс для разрезания данного списка.
Объект среза будет содержать индексы [0, 1, 2, 3] для данного стоп-значения 4. И элементы в списке, соответствующие этим индексам, – [‘a’, ‘b’, ‘c’, ‘d’ ]. Следовательно, результирующий список будет [‘a’, ‘b’, ‘c’, ‘d’].
Пример 2: с определенными начальной и конечной позициями
В этом примере мы подготовим объект-слайс с определенными положениями начала и конца и будем использовать этот объект-слайс для разрезания данного списка.
Объект среза будет содержать индексы [2, 3, 4, 5, 6] для заданных начальных и конечных значений. И элементы в списке, соответствующие этим индексам, должны быть возвращены list_1 [slice_object]. Следовательно, результирующий список [‘c’, ‘d’, ‘e’, ‘f’, ‘g’].
Пример 3: с определенными начальными и конечными положениями, шагом
В этом примере мы подготовим объект среза с определенными положениями начала и конца, а также определенным значением для шага. Затем мы будем использовать этот объект для нарезки данного списка.
Объект среза будет содержать индексы [2, 4, 6]. И элементы в списке, соответствующие этим индексам, должны быть возвращены list_1 [slice_object]. Следовательно, итоговый список [‘c’, ‘e’, ‘g’].
Заключение
В этом руководстве примеров в Python мы узнали, как разрезать список, используя встроенную функцию slice().
Примеры работы со списками Python
Список Python — это последовательность значений любого типа: строки, числа, числа с плавающей точкой или даже смешанного типа. В этом материале речь пойдет о функциях списков, о том, как создавать их, добавлять элементы, представлять в обратном порядке и многих других.
Создать списки Python
Для создания списка Python нужно заключить элементы в квадратные скобки:
Список может выглядеть так:
Можно смешивать типы содержимого:
Поддерживаются вложенные списки как в примере выше.
Получать доступ к любому элементу списка можно через его индекс. В Python используется система индексации, начиная с нуля.
Принцип похож на строки.
Изменение списка
Списки — это изменяемые объекты, поэтому их элементы могут изменяться, или же может меняться их порядок.
Если есть такой список:
То его третий элемент можно изменить следующим образом:
Если сейчас вывести его на экран, то он будет выглядеть вот так:
Если индекс — отрицательное число, то он будет считаться с последнего элемента.
Вывод этого кода — ‘пять’.
Проход (итерация) по списку
Читать элементы списка можно с помощью следующего цикла:
Таким образом можно читать элементы списка. А вот что касается их обновления:
Результат будет следующим:
Функция len() используется для возврата количества элементов, а range() — списка индексов.
Стоит запомнить, что вложенный список — это всегда один элемент вне зависимости от количества его элементов.
Результат кода выше — 5 .
Срез списка
Можно получить срез списка с помощью оператора ( : ):
Результат кода выше — [‘два’, ‘три’]
Если убрать первое число, от срез будет начинаться с первого элемента, а если второе — с последнего.
Если убрать числа и оставить только двоеточие, то скопируется весь список.
Результат этого года:
Поскольку списки изменяемые, менять элементы можно с помощью оператора среза:
Вставить в список
Метод insert можно использовать, чтобы вставить элемент в список:
Индексы для вставляемых элементов также начинаются с нуля.
Добавить в список
Метод append можно использовать для добавления элемента в список:
Можно добавить и больше одного элемента таким способом:
При этом list_2 не поменяется.
Отсортировать список
Для сортировки списка нужно использовать метод sort .
Перевернуть список
Можно развернуть порядок элементов в списке с помощью метода reverse :
Индекс элемента
Метод index можно использовать для получения индекса элемента:
Если в списке больше одного такого же элемента, функция вернет индекс первого.
Удалить элемент
Удалить элемент можно, написав его индекс в методе pop :
Если не указывать индекс, то функция удалит последний элемент.
Элемент можно удалить с помощью метода remove .
Оператор del можно использовать для тех же целей:
Можно удалить несколько элементов с помощью оператора среза:
Функции агрегации
В Python есть некоторые агрегатные функции:
sum() работает только с числовыми значениями.
А max() , len() и другие можно использовать и со строками.
Сравнить списки
В Python 2 сравнить элементы двух списком можно с помощью функции cmp :
Она вернет -1 , если списки не совпадают, и 1 в противном случае.
В Python 3 для этого используется оператор ( == ):
Результат не совпадают .
Математические операции на списках:
Для объединения списков можно использовать оператор ( + ):
Список можно повторить с помощью оператора умножения:
Списки и строки
Для конвертации строки в набор символов, можно использовать функцию list :
Функция list используется для того, чтобы разбивать строку на отдельные символы.
Можно использовать метод split для разбития строки на слова:
Она возвращает обычный список, где с каждым словом можно взаимодействовать через индекс.
Символом разбития может служить любой знак, а не только пробел.
Результат будет аналогичен:
Объединить список в строку
Обратный процесс — объединение элементов списка в строку.
Это делается с помощью метода join :
Результат Monty Python .
Алиасинг (псевдонимы)
Когда две переменные ссылаются на один и тот же объект:
Алиасинг значит, что на объект ссылается больше одного имени.
Следующий пример показывает, как меняются изменяемые списки:
Изменился список list_2 , но поскольку он ссылается на один и тот же объект, то оригинальный список тоже поменялся.
Использовать “псевдонимы” при работе со списками не рекомендуется.
В целом, работать со списками в Python очень просто.