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

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

我观察到的行为是返回一个空列表,这对我来说似乎是合理的。 然而,对我来说这似乎是合理的,因为它会以相反顺序返回ij之间的项目列表,或者仅仅引发异常。

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


是的,对于标准的Python类型,如果j <= i为真,则结果片是空的。 要以相反的顺序获得结果,您需要添加一个负面步幅:

list[i:j:-1]

因为显式比隐式更好。

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

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

大胆重视我的。

自定义类型可以自由解释这一点。

链接地址: http://www.djcxy.com/p/26759.html

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

下一篇: Python list extend functionality using slices