繁体   English   中英

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

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

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

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

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

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

list[i:j:-1]

因为显性比隐含更好

这在常见序列操作中记录 ,脚注4:

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

大胆强调我的。

自定义类型可以自由解释。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM