Найти в Дзене
Информатика с АИ

Индексы и срезы в Python.

Здравствуйте. В этой статье я постараюсь расписать информацию по индексам срезам в Python. Попытаюсь расписать максимально понятно и наглядно. Надеюсь многим поможет эта статья для решения разных задач в ЕГЭ, а также просто для решения задач, где используются срезы. Рассмотрю, как применяются и используются индексы у следующих последовательностей: строки (str), списки (list) и кортежи (tuple). Данную статью пишу в основном для своих учеников и для себя. Если вам она поможет, то буду благодарен за лайк. Итак, начнем. Индекс — это число, заключённое в квадратные скобки, которое мы ставим после составного объекта. Они позволяют обращаться к отдельным элементам последовательности по их позиции. По индексу обращаются к элементу коллекции. Существует два вида индексации: В прямой индексации мы обращаемся к элементу в порядке позиции. Индекс представляет собой целое число, которое указывает на позицию элемента в последовательности. В Python нумерация индексов начинается с 0, то есть первы
Оглавление

Здравствуйте. В этой статье я постараюсь расписать информацию по индексам срезам в Python. Попытаюсь расписать максимально понятно и наглядно. Надеюсь многим поможет эта статья для решения разных задач в ЕГЭ, а также просто для решения задач, где используются срезы. Рассмотрю, как применяются и используются индексы у следующих последовательностей: строки (str), списки (list) и кортежи (tuple).

Данную статью пишу в основном для своих учеников и для себя. Если вам она поможет, то буду благодарен за лайк.

Итак, начнем.

Индексы.

Индекс — это число, заключённое в квадратные скобки, которое мы ставим после составного объекта. Они позволяют обращаться к отдельным элементам последовательности по их позиции. По индексу обращаются к элементу коллекции.

Существует два вида индексации:

  • прямая индексация;
  • обратная индексация.

Прямая индексация.

В прямой индексации мы обращаемся к элементу в порядке позиции. Индекс представляет собой целое число, которое указывает на позицию элемента в последовательности. В Python нумерация индексов начинается с 0, то есть первый элемент имеет индекс 0, второй – 1, третий – 2 и так далее. Если нам нужен четвертый элемент, то нужно обратиться к третьему индексу.

Обратная индексация.

В обратной индексации мы обращаемся к элементу коллекции в обратном порядке и элементы нумеруются с конца и первый индекс с конца это -1.

-3

Ошибка!

Если номер индекса в последовательности больше либо равен len(S), или меньше, чем -len(S), то при обращении к этому символу строки произойдет ошибка IndexError: string index out of range. Эта ошибка говорит о том, что мы вышли за пределы индексации.

Срезы.

Срез (slice) — извлечение из последовательности одного элемента или некоторого фрагмента (подстроки). Создать срез можно специальной командой, но обычно ей не пользуются (лишняя строка кода, я считаю). Возможно когда-то будет момент, что без нее будет не обойтись.

Важно помнить, что в срез попадают символы от первого указанного индекса (включительно) до второго (не включая его).

slice(start, stop[, step])
  • start - начало среза
  • stop - конец среза (и эта позиция не включается в срез)
  • step - шаг с которым будет извлечен срез.

Её использование покажу ниже, а пока чуть подробнее о срезе, который используется с помощью квадратных скобок.

stroka = "Добро пожаловать в срезы!"

# получить первые 4 символа
print(stroka[:4])
Добро пожаловать в срезы!
# получить последние 4 символа
print(stroka[-4:]) # езы!
Добро пожаловать в ср
езы!
# получить все символы кроме 3 последних
print(stroka[:-3]) # Добро пожаловать в сре
Добро пожаловать в срезы!
# получить символы с 1 до 3 позиции включительно
print(stroka[1:4]) # обр
Д
обро пожаловать в срезы!
# получить символы от 3 с начала по -7 с конца (не включает)
print(stroka[3:-7]) # ро пожаловать в
Доб
ро пожаловать в срезы!
# перевернуть строку
print(stroka[::-1]) # !ызерс в ьтаволажоп орбоД
Добро пожаловать в срезы!
# получить символы с конца до -10 в обратном порядке
print(stroka[:-10:-1]) # !ызерс в
Добро пожаловать
в срезы!
# получить строку от начала и до -5 символа и перевернуть
print(stroka[-5::-1]) # рс в ьтаволажоп орбоД
Добро пожаловать в срезы!
# от начала до 6 индекса, каждый второй символ
print(stroka[:7:2]) # Дбоп
Добро пожаловать в срезы!
# с 3 до 11 позиции в обратном порядке
print(stroka[11:3:-1]) # олажоп о
Добр
о пожаловать в срезы!
# с -3 до -8 позиции каждый символ
print(stroka[-3:-8:-1]) # зерс_
Добро пожаловать в
срезы!
# с -3 до -8 позиции каждый 2 символ
print(stroka[-3:-8:-2]) # зр_
Добро пожаловать в с
резы!
# с 3 позиции по 10 не включительно каждый 2 символ
print(stroka[3:10:2]) # р_оа
Доб
ро пожаловать в срезы!
# с начала каждый 4 символ
print(stroka[::4]) # Дожв р!
Добро пожаловать в срезы!
# с конца в начало, каждый 4 символ
print(stroka[::-4]) # !р вжоД
#
Добро пожаловать в срезы!

Как работать со slice?

-4

Аналогично будет работать со списками и кортежем, но там будет возвращать элементы, а не символы. Вот несколько примеров:

-5
-6

Важный момент: если ваш срез выходит за границы индексов, ошибки не будет.

Некоторые алгоритмы.

Из трех наших последовательностей мы можем изменить только список. Строка и кортеж являются неизменяемыми типами данных, поэтому их изменение невозможно, но есть обходной путь через создание новой переменной.

Получить первые или последние символы (элементы)

-7

Добавить элемент спереди

-8

Добавить элемент в конец

-9

Вставить элемент в середину в четную длину.

Делать это будем через длину последовательности. Середина это половина длины.

-10

Заменить середину в нечетной длине

-11

Популярные срезы.

  • [:] — копия последовательности.
  • [1:] — все элементы за исключением первого.
  • [:-1] — все элементы за исключением последнего.
  • [::-1] — обратная последовательность.
  • [1:-1] — все элементы за исключением последнего и первого.
  • [1::2] — вывод нечетных элементов последовательности со второго.
  • [::2] — вывод четных элементов последовательности с первого.
  • [-2:0:-1] — обратный порядок всех элементов за исключением первого и последнего.
  • [-2:0:-2] — обратный порядок каждого второго элемента за исключением первого и последнего.

Синтаксис срезов строк очень похож на синтаксис функции range().

Заключение.

Индексы и срезы играют ключевую роль при работе с данными в Python. Они обеспечивают гибкость и удобство при доступе и изменении элементов последовательностей. Понимание принципов работы с индексами является важным навыком для любого программиста на Python.

Срезы и индексы используются во многих задачах ЕГЭ. Но основными заданиями, где их используют - это задание 5, 24, 25.

Успехов всем в изучении, использовании индексов и срезов.

Весь курс подготовки к ЕГЭ с подробными описаниями и комментариями.

Лайки и комментарии приветствуются.