Что на самом деле делает расширенный синтаксис среза для отрицательных шагов? [Дубликат]
На этот вопрос уже есть ответ здесь:
Понимание обозначения среза 31 ответРасширенный синтаксис слайса в python был объяснен мне как "a[n:m:k] returns every kth element from n to m
».
Это дает мне хорошее представление о том, чего ожидать, когда k положительно. Но я потерялся в том, как интерпретироватьa[n:m:k]
для отрицательного к. я знаю этоa[::-1]
переворачивает, и чтоa[::-k]
берет когда-либо k-й элемент обратного.
Но как это обобщение определения для k положительного? Я хотел бы знать, какa[n:m:k]
на самом деле определяется, так что (например) я могу понять, почему:
"abcd"[-1:0:-1] = "dcb"
Являетсяa[n:m:-k]
поменять местами последовательность a, затем взять элементы с исходными индексами, начиная с n и заканчивая одним перед m или чем-то? Я так не думаю, потому что этот шаблон не соответствует другим значениям n и m, которые я пробовал. Но я не могу понять, как это на самом деле определяется, и поиск ни к чему не привел.