Сегментация последовательностей в Python
В Python помимо обращения к отдельным элементам списка, можно работать с конкретным подмножеством элементов в списке или строке. Такие подмножества называются сегментами. Для создания сегмента требуется прописать индексы первого и последнего элемента, с которым вы хотите работать.
1. Создание сегмента по начальному и конечному индексу.
Возьмем любой список и создадим сегмент, состоящий из элементов с индексом со 2 по 4. Для этого в квадратных скобках укажем начальный индекс и конечный, разделенный двоеточием.
>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw']
>>> print(cars[2:4])
['audi', 'land rover']
Операция сегментации копирует элементы со 2 по 4, исходный список не изменяется.
2. Создание сегмента только по конечному индексу.
Если начальный индекс не указан, то Python предполагает, что значение индекса равно 0. В таком случае записи [ : 3 ] и [ 0 : 3 ] абсолютно идентичны.
>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw']
>>> print(cars[:3])
['ford', 'opel', 'audi']
>>> print(cars[0:3])
['ford', 'opel', 'audi']
3. Создание сегмента только по начальному индексу.
Если не указан конечный индекс, то Python определяет его равным длине последовательности.
>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw']
>>> print(cars[2:])
['audi', 'land rover', 'bmw']
>>> print(cars[2:len(cars)])
['audi', 'land rover', 'bmw']
4. Копирование списка. Создание сегмента без индексов.
Если не указан начальный и конечный индекс, то в этом случае происходит копирование списка.
>>> cars = [ 'ford', 'opel', 'audi', 'land rover', 'bmw']
>>> favorite_cars = cars[:]
>>> print(favorite_cars)
['ford', 'opel', 'audi', 'land rover', 'bmw']
5. Создание сегментация с шагом.
Для создания сегментации с шагом, после обозначения начального и конечного индекса устанавливается шаг.
>>> numbers = [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 ]
>>> print(numbers[2 : 7 : 2])
[6, 10, 14]
>>> print(numbers[:: 2])
[2, 6, 10, 14, 18]
6. Создание сегментации с обратным шагом.
Отрицательное значение шага используется для сегментации в обратном порядке. В следующем примере создается список в обратном порядке.
>>> numbers = [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 ]
>>> print(numbers[::-1])
[20, 18, 16, 14, 12, 10, 8, 6, 4, 2]
7. Сегментация строк.
Создание сегментов в строках создается по аналогии с сознанием сегментов в списках.
Пример создания сегмента по начальному и конечному индексу:
>>> a = 'Создание сегментов в строках создается по аналогии с созданием сегментов в списках. '
>>> print(a[15:40])
тов в строках создается п
Пример создания сегмента с шагом 4:
>>> print(a[::4])
Са мо о дсоаи деен па
Пример сегментации с отрицательным шагом:
>>> print(a[::-1])
.хаксипс в вотнемгес меинадзос с ииголана оп ястеадзос хакортс в вотнемгес еинадзоС
8. Изменение списка через сегменты.
С помощью сегментов можно изменять списки. Присвоить сегменту новые значения, а остальные останутся без изменений.
>>> numbers = [ 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 ]
>>> numbers[2:5] = ['ford', 'bmw', 2354]
>>> print(numbers)
[2, 4, 'ford', 'bmw', 2354, 12, 14, 16, 18, 20]
Далее: Цикл for и функция range в Python
Назад: Списки и кортежи в Python