切片算子的负界

Tay*_*yab 6 python slice

我是python的新手,每个新手遇到的事情之一就是切片操作符.我有一个清单:

li=[1,2,3,4,5,6,7]
Run Code Online (Sandbox Code Playgroud)

根据我的理解,调用li[:-1]与调用相同,li[0:-1]但是当使用负面步骤时,事情并不像我想象的那样完全正常.所以问我为什么结果的问题

print(li[:-3:-2]) # is 7
Run Code Online (Sandbox Code Playgroud)

但结果

print(li[0:-3:-2]) # is []
Run Code Online (Sandbox Code Playgroud)

期待在这种情况下如何处理消极步骤的一些解释.

VPf*_*PfB 7

关键是失踪(或无)开始值并不总是自动设置为0.请仔细阅读注意事项5 操作顺序s[i:j:k]

如果i或j被省略或无,则它们变为"结束"值(结束取决于k的符号)

为了简化这种情况,请考虑负步骤-1而不是-2.步骤-1通常用于反转列表.

>>> print(li[None:-3:-1])
[7, 6]
>>> print(li[0:-3:-1])
[]
Run Code Online (Sandbox Code Playgroud)

第一个例子显示了切片的真正"最终值"是什么.