如何读取负步切片

MM1*_*MM1 3 python list slice

我已经看到了一些关于切片的问题,但没有看到关于其中一些的有用答案,我无法很好地理解。假设我们有这个列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ,我按照以下方式对其进行切片:

a[:8:-1] #Ouput: [9]
Run Code Online (Sandbox Code Playgroud)

为什么?我们给它的结尾是 8,步长是 -1。它怎么会这样呢?

che*_*ner 7

如果省略切片表达式的第一部分,则默认为None。当list.__getitem__需要解释什么slice(None, 8, -1)意思时,它使用步长的符号来确定您是从 0 开始计数还是从列表末尾向下计数。在这种情况下,您正在倒计时,因此:8:-1相当于slice(-1, 8, -1)