Срезы в python с отрицательным шагом
Не могу понять никак, откуда начинается отсчет 4, откуда 1. Если используется отрицательный шаг, и элементы среза извлекаются в обратном порядке, тогда и границы среза тоже нужно указывать в обратном порядке. Первой указывается правая граница среза, второй — левая:
value = 'Hexlet'
# Символ с индексом 1 не будет включен в подстроку
value[4:1:-1] # 'elx'
Вроде бы всё написано, но никак не могу в голове разложить, что нужно делать, сначала отобразить Hexlet как telxeH, а потом вести отсчёт элемента среза 4 и 1, или нет? Откуда считать то по итогу? Объясните именно логику что делать по порядку. Получается на выходе 'elx' но как именно я не пойму. Спасибо.
Ответы (2 шт):
У вас есть строка value = 'Hexlet' - [0-H][1-e][2-x][3-l][4-e][5-t]. Вы хотите извлечь подстроку, начиная с индекса 4 и заканчивая индексом 1 в обратном порядке. При использовании шага -1, элементы будут извлекаться в обратном порядке.
- Вы начинаете с индекса 4 (правая граница среза) и берете символ с индексом
('e') - Перемещаетесь влево на еще один шаг и берете символ с индексом 3
('l'). - Перемещаетесь влево на еще один шаг и берете символ с индексом 2
('x'). - Вы достигли левой границы среза с индексом 1 (левая граница среза) - он не включается в срез.
Полученная подстрока: 'elx'.
Срез[Начало:Конец:Шаг] (Конец не включается)
value = 'Hexlet'
Индексы равнозначные "H"=[0]=[-6]
print(value[-5:-2]) #exl
print(value[1:4]) #exl
print(value[1:-2]) #exl
это одно и тоже
Шаг- просто прибавляется положительный слева направо, отрицательный наоборот.
print(value[::1]) #Hexlet 0=0, 0+1=1, 1+1=2, 2+1=3 ...
print(value[::-1]) #telxeH 0+(-1)=-1, -1+(-1)=-2, -2+(-1)=-3 ...
