Синтаксисът на разширения срез в python ми беше обяснен като "a[n:m:k] returns every kth element from n to m
".
Това ми дава добра представа какво да очаквам, когато k е положително. Но не знам как да тълкувам a[n:m:k]
за отрицателно k. Знам, че a[::-1]
обръща a и че a[::-k]
взема всеки k-ти елемент от обърнатото a.
Но как това е обобщение на определението за k положително? Бих искал да знам как всъщност се дефинира a[n:m:k]
, така че (например) да мога да разбера защо:
"abcd"[-1:0:-1] = "dcb"
Дали a[n:m:-k]
обръща последователността a, след което взема елементите с оригинални индекси, започващи от n и завършващи един преди m или нещо подобно? Не мисля така, защото този модел не пасва на други стойности на n и m, които съм пробвал. Но не мога да разбера как всъщност се дефинира това и търсенето не ме доведе доникъде.