有人可以解釋爲什麼a[:5:-1] != a[:5][::-1]
?如何理解具有負k指數的python切片?
>>> a = range(10)
>>> a[:5][::-1]
[4, 3, 2, 1, 0]
>>> a[:5:-1]
[9, 8, 7, 6]
有人可以解釋爲什麼a[:5:-1] != a[:5][::-1]
?如何理解具有負k指數的python切片?
>>> a = range(10)
>>> a[:5][::-1]
[4, 3, 2, 1, 0]
>>> a[:5:-1]
[9, 8, 7, 6]
slicings的一般語法是
a[start:stop:step]
可以省略任何三個值start
,stop
,或者step
的。如果你省略了step
,它總是默認爲1
。相反,缺省值start
和stop
取決於step
的符號:如果step
爲正,start
默認爲0
和stop
至stop
至len(a)
。如果step
爲負數,則start
默認爲len(a) - 1
和stop
爲「列表的開頭」。
所以a[:5:-1]
相同a[9:5:-1]
這裏,
而a[:5][::-1]
相同a[0:5][4::-1]
。
(請注意,這是不可能給出的默認值stop
明確,如果step
爲負。停止值爲非包容性,所以0
會從「名單的開端」不同。使用None
就等於放棄沒有任何價值。)
a[:5][::-1]
說那是什麼程序應該首先採取元素,直到該數據集的第5個元素,然後扭轉他們(採取從最後一個每一個元素)。
與此相反,a[:5:-1]
表示您應該帶元素直到從最後一個元素開始的第5個元素(每個元素從最後一個元素開始)。
a [:5]返回一個數組,索引0到4,然後負數索引作爲第二個操作。 a [:5:-1]會對原始數組進行負向索引。
看起來像::操作降序。只是猜測 – ControlAltDel 2012-03-28 17:54:42