如果 list[j] 在 list[i] 之前,list[i:j] 是否保证为空列表?

Is list[i:j] guaranteed to be an empty list if list[j] precedes list[i]?

The Python tutorial explains slice behavior when indices are negative, but I can't find documentation describing the behavior when the end index precedes the start index. (I've also looked at Explain Python's slice notation,可能是我看得不够仔细,但是那里的答案似乎没有解决这一点。)

我观察到的行为是 returned 一个空列表,这对我来说似乎是合理的。但是,对我来说,return ij 之间的项目列表以相反的顺序或简单地引发异常也是合理的。

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

是的,如果 j <= i 为真,对于 标准 Python 类型 ,结果切片为空。要得到倒序的结果,需要加负步幅:

list[i:j:-1]

因为显式优于隐式

这记录在 Common Sequence Operations,脚注 4:

The slice of s from i to j is defined as the sequence of items with index k such that i <= k < j. If i or j is greater than len(s), use len(s). If i is omitted or None, use 0. If j is omitted or None, use len(s). If i is greater than or equal to j, the slice is empty.

大胆强调我的。

自定义类型可以自由地对此进行不同的解释。