谁能解释为什么 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[start:stop:step]
您可以省略 start
、stop
或 step
这三个值中的任何一个。如果您省略 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]
相同。
(请注意,如果 step
为负数,则不可能显式地为 stop
指定默认值。停止值不包含在内,因此 0
将不同于“列表的开头”。使用 None
将等同于不提供任何值。)
关于python - 如何理解负 k 索引的 python 切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9913011/