Индексы и срезы в Python
Строки и списки в Python состоят из элементов, занимающих свои нумерованные позиции в иерархии. К любому элементу, можно обратиться по его порядковому номеру - индексу. Отсчет начинается с нуля и ведется слева направо.
Индекс строки в Python
Строка представляет собой упорядоченный набор символов. Это значит, что каждый символ в строке занимает свое место - индекс. Например, у строки 'string', символ 's' имеет индекс 0 и далее по порядку:
- s - 0
- t - 1
- r - 2
- i - 3
- n - 4
- g - 5
Первый по счету символ в строке всегда будет иметь индекс 0. Таким образом, обратившись по индексу к элементу, мы можем узнать его значение. В чем и состоит смысл индексов. У пробела, так же есть индекс.
Так мы получим всю строку целиком:
get_str = 'это строка'
print(get_str)
это строка
А здесь, обратившись по индексу 5, получаем его значение - символ 't'.
get_s = 'это строка'
print(get_s[5])
t
При обращении к несуществующему индексу, программа выведет ошибку.
get_s = 'это строка'
print(get_s[10])
IndexError: string index out of range
Отрицательный индекс
Мы знаем точно, что у первого символа строки всегда будет индекс 0. А как насчет последнего символа? Ведь длина строки не всегда заранее известна. Для закрепления постоянного индекса для последнего символа, Python вводит понятие отрицательного индекса и предлагает вести отсчет наоборот, справа налево.
P y t h o n
-6 -5 -4 -3 -2 -1
get_last = 'Python'
print(get_last[-1])
n
Срез строки в Python
Иногда требуется получить из строки не один символ, а сразу несколько по некоторой закономерности - первые 2, каждый 3-ий или 4 последних. Для этого существуют срезы. Мы выборочно срезаем нужные символы и обращаемся по срезу. Надо отметить, что физически срезанные символы, остаются на своих местах. Сама строка никоим образом не меняется, мы работаем со срезанными копиями.
Возьмем первые три символа у строки 'срезы Python'. В параметрах передадим два индекса - начало и конец среза. При срезе первый индекс входит включительно, а второй индекс не входит в выборку.
slice = 'срезы Python'
print(slice[0:3])
сре #символ 'з' не попал в выборку
Если не указаны начало или конец среза, то по умолчанию берётся первый или последний элемент коллекции.
slice = 'срезы Python'
print(slice[6:])
Python #с индекса 6 и до конца
slice = 'срезы Python'
print(slice[:5])
срезы #с начала строки до 5-го индекса включительно
slice = 'срезы Python'
print(slice[:])
срезы Python #выводит строку целиком
Третьим параметром у срезов, может передаваться шаг.
slice = 'срезы Python'
print(slice[::2])
сеыPto #выводит символы через один
Индекс списка в Python
Список - это упорядоченная коллекция нумерованных элементов, где первый элемент начинается с нулевой позиции. Когда мы обратимся к 4-ому элементу, то получим 12.
a = [2, 3, 5, 9, 12, 16]
print(a[4])
12
Правила для индексов у списка, похожие для индексов у строк:
- обращение к несуществующему элементу, выведет ошибку
- первый индекс равен 0, а последний индекс -1
Заменить элемент в списке
Существует принципиальная разница - элементы в списках в отличие от элементов в строках можно заменять, удалять или добавлять. Мы обращаемся по индексу в 3-му элементу в списке d и присваиваем индексу новое значение. В результате произошла замена - 7 поменялась на 10.
d = [1, 3, 5, 7, 8]
d[3] = 10
print(d)
[1, 3, 5, 10, 8]
Удалить элемент из списка
Элемент со значением 15 под индексом 2, вылетел из списка.
f = [11, 13, 15, 17]
del f[2]
print(f)
[11, 13, 17]
Срез списка в Python
Со срезами у списков дело обстоит точно так же, как и у строк. Делаем выборку со 2-го индекса по 4-ый, не включая сам 4-ый индекс.
b = [21, 32, 54, 90, 22, 46]
print(b[2:4])
[54, 90]
Вывод четных элементов списка
Выведем все четные элементы списка, используя срезы. Первым параметром передаем 1-ый индекс, во втором параметре пишем двоеточие (по умолчанию выведется последний элемент списка) и третьим параметром указываем шаг для выводимых элементов.
c = [21, 22, 23, 24, 25, 26, 27]
print(c[1::2])
[22, 24, 26]
Итоги
Ранее мы научились создавать строку, узнали, какие у строк есть методы. Сегодня вы научились по индексам и срезам находить значения. Но на этом, познания о строках не заканчиваются и все самое интересное, вас ждет впереди.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.