Что на самом деле делает расширенный синтаксис среза для отрицательных шагов? [Дубликат]

На этот вопрос уже есть ответ здесь:

Понимание обозначения среза 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, которые я пробовал. Но я не могу понять, как это на самом деле определяется, и поиск ни к чему не привел.

Ответы на вопрос(2)

Ваш ответ на вопрос