Ale*_*ker 18 python list syntactic-sugar slice
python中的扩展切片语法已经向我解释为" a[n:m:k] returns every kth element from n to m".
这让我很清楚当k为正时会发生什么.但是我对如何解释a[n:m:k]负面k 感到迷茫.我知道这会a[::-1]颠倒一个,并且这a[::-k]需要反转a的第k个元素.
但这是对k正定义的概括呢?我想知道a[n:m:k]实际上是如何定义的,所以(例如)我可以理解为什么:
"abcd"[-1:0:-1] = "dcb"
Run Code Online (Sandbox Code Playgroud)
是否正在a[n:m:-k]逆转序列a,然后从m开始,在m之前从一个原始索引开始,然后结束一个?我不这么认为,因为这种模式不适合我尝试过的其他n和m值.但我无法弄清楚这是如何实际定义的,搜索让我无处可去.
Ash*_*ary 15
[-1:0:-1]意思是:从索引开始len(string)-1并向上移动0(不包括)并采取步骤-1(反向).
因此,提取以下索引:
le-1, le-1-1, le-1-1-1 .... 1 # le is len(string)
Run Code Online (Sandbox Code Playgroud)
例:
In [24]: strs = 'foobar'
In [25]: le = len(strs)
In [26]: strs[-1:0:-1] # the first -1 is equivalent to len(strs)-1
Out[26]: 'raboo'
In [27]: strs[le-1:0:-1]
Out[27]: 'raboo'
Run Code Online (Sandbox Code Playgroud)
Python文档(这里是技术文档;解释range()更容易理解)比简化的"每个第k个元素"解释更正确.切片参数恰当地命名
slice[start:stop:step]
Run Code Online (Sandbox Code Playgroud)
因此切片从定义的位置开始,在到达位置start之前停止stop,并通过step项目从一个位置移动到下一个位置.