如果list [j]在list [i]之前,list [i:j]保证是一个空列表吗?
Python教程解释了索引为负数时的切片行为,但我无法找到描述当结束索引位于开始索引之前时的行为的文档。 (我也看过解释Python的切片符号,也许我没有仔细阅读,但那里的答案似乎没有解决这一点。)
我观察到的行为是返回一个空列表,这对我来说似乎是合理的。 然而,对我来说这似乎是合理的,因为它会以相反顺序返回i
和j
之间的项目列表,或者仅仅引发异常。
如果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]?