如果list 在list 之前,list 保证是一个空列表?

Python教程解释了索引为负数时的切片行为,但是当末尾索引位于开始索引之前时,我找不到描述行为的文档。 (我也看过解释Python的切片符号 ,也许我没有仔细阅读,但答案似乎并没有解决这一点。)

我观察到的行为是返回一个空列表,这对我来说似乎是合理的。 不过,对我来说这样做似乎是合理的,以相反的顺序返回ij之间的项目列表,或者简单地抛出exception。

如果list[j]list[i]之前, list[i] list[i:j]保证是一个空列表?

是的,如果j <= i是真的,那么对于标准的Pythontypes ,结果片是空的。 为了以相反的顺序得到结果,你需要添加一个负面的步伐:

 list[i:j:-1] 

因为显性比隐性好

这在通用序列操作中有记载,脚注4:

ijs片段被定义为具有索引k的项目序列,使得i <= k < j 。 如果j大于len(s) ,请使用len(s) 。 如果省略或None ,使用0 。 如果省略了jNone ,则使用len(s)如果大于或等于j ,则切片是空的。

大胆重视我的。

自定义types可以自由地解释这一点。