如何理解具有负k索引的python切片?
有人能解释一下为什么如何理解具有负k索引的python切片?,python,Python,有人能解释一下为什么a[:5:-1]!=a[:5][::-1] >>> a = range(10) >>> a[:5][::-1] [4, 3, 2, 1, 0] >>> a[:5:-1] [9, 8, 7, 6] a[:5][::-1]所说的是,程序应该首先获取元素,直到数据集的第5个元素,然后将它们反转(从最后一个元素开始获取每个元素) 与此相反,a[:5:-1]说,您应该从最后一个元素开始获取元素,直到第五个元素(从最后一个元素开始获
a[:5:-1]!=a[:5][::-1]
>>> a = range(10)
>>> a[:5][::-1]
[4, 3, 2, 1, 0]
>>> a[:5:-1]
[9, 8, 7, 6]
a[:5][::-1]
所说的是,程序应该首先获取元素,直到数据集的第5个元素,然后将它们反转(从最后一个元素开始获取每个元素)
与此相反,
a[:5:-1]
说,您应该从最后一个元素开始获取元素,直到第五个元素(从最后一个元素开始获取每个元素) a[:5]返回一个数组,索引为0到4,然后作为第二个操作对其进行负索引。a[:5:-1]对原始数组进行负索引。slicings的一般语法为
a[start:stop:step]
您可以省略三个值中的任何一个开始
,停止
,或步骤
。如果省略步骤
,它将始终默认为1
。相比之下,start
和stop
的默认值取决于step
的符号:如果step
为正,start
默认为0
和stop
默认为len(a)
。如果step
为负值,start
默认为len(a)-1
,stop
默认为“列表的开头”
所以这里的a[:5:-1]
与a[9:5:-1]
相同
而a[:5][::-1]
与a[0:5][4::-1]
相同
(请注意,如果
步骤
为负数,则不可能明确给出停止
的默认值。停止值不包含在内,因此0
将不同于“列表的开头”。使用None
将等同于根本不给出任何值。)类似于::操作。只是猜测而已