理解 pythons 反向切片 ( [::-1] )

Understanding pythons reverse slice ( [::-1] )

我一直认为在 python 切片操作中省略参数会导致:

如果步长为正,则成立,但一旦步长为负,如 "reverse slice" [::-1],省略 start/end 会导致:

这是特例,还是我遗漏了什么?

默认是总是None;由类型决定如何处理 3 个值中的任何一个 None。在这种情况下,list 对象只是传递了一个 slice(None, None, -1) 对象。

请参阅 sequence types documentation 中操作 table 的脚注 5,了解 Python 的默认序列类型(包括列表对象)如何解释这些:

s[i:j:k]
5. [...] If i or j are omitted or None, they become “end” values (which end depends on the sign of k).

因此默认值取决于步长值的符号;如果为负,则两端相反。对于 [::-1],结束值分别为 len(s) - 1-1(绝对值,而不是相对于结束值),因为步长为负。