我一直认为在python切片操作中省略参数会导致:
0
len(lst)
1
如果步骤是肯定的,那么这是正确的,但是一旦步骤为负,就像在"反向切片" [::-1]
,省略开始/结束结果:
len(lst)-1
None
这是一个特例,还是我错过了什么?
答案 0 :(得分:2)
默认为始终 None
;由类型决定如何处理3个值中的任何一个的None
。在这种情况下,list
对象只是传递slice(None, None, -1)
对象。
请参阅sequence types documentation中操作表的脚注5,了解Python的默认序列类型(包括列表对象)如何解释这些:
s[i:j:k]
5. [...] 如果省略 i 或 j 或None
,它们将成为“结束”值(结束)取决于 k 的符号。
因此默认值取决于步长值的符号;如果是负面的,则结束相反。对于[::-1]
,结束值分别为len(s) - 1
和-1
(绝对值,而不是相对于结尾值),因为该步骤为负数。