如果list 在list 之前,list 保证是一个空列表?
Python教程解释了索引为负数时的切片行为,但是当末尾索引位于开始索引之前时,我找不到描述行为的文档。 (我也看过解释Python的切片符号 ,也许我没有仔细阅读,但答案似乎并没有解决这一点。)
我观察到的行为是返回一个空列表,这对我来说似乎是合理的。 不过,对我来说这样做似乎是合理的,以相反的顺序返回i
和j
之间的项目列表,或者简单地抛出exception。
如果list[j]
在list[i]
之前, list[i]
list[i:j]
保证是一个空列表?
是的,如果j <= i
是真的,那么对于标准的Pythontypes ,结果片是空的。 为了以相反的顺序得到结果,你需要添加一个负面的步伐:
list[i:j:-1]
因为显性比隐性好 。
这在通用序列操作中有记载,脚注4:
从i到j的s片段被定义为具有索引k的项目序列,使得
i <= k < j
。 如果我或j大于len(s)
,请使用len(s)
。 如果我省略或None
,使用0
。 如果省略了j
或None
,则使用len(s)
。 如果我大于或等于j ,则切片是空的。
大胆重视我的。
自定义types可以自由地解释这一点。