[英]Code for multiplying list elements list[i] and list[j] only if i<j
[英]Is list[i:j] guaranteed to be an empty list if list[j] precedes list[i]?
Python教程解释了索引为负时的切片行为,但是当结束索引在起始索引之前时,我找不到描述行为的文档。 (我也看过Explain Python的切片符号 ,也许我读的不够仔细,但那里的答案似乎没有解决这一点。)
我观察到的行为是返回一个空列表,这对我来说似乎是合理的。 但是,对于我来说,以相反的顺序返回i
和j
之间的项目列表或者只是引发异常对我来说似乎也是合理的。
如果list[j]
在list[i]
之前, list[i]
list[i:j]
保证是空列表?
是的,如果j <= i
为真,则对于标准Python类型 ,结果切片为空。 要以相反的顺序获得结果,您需要添加一个负步幅:
list[i:j:-1]
因为显性比隐含更好 。
这在常见序列操作中记录 ,脚注4:
从i到j的s的片被定义为具有索引k的项的序列,使得
i <= k < j
。 如果i或j大于len(s)
,则使用len(s)
。 如果省略i或None
,则使用0
。 如果省略j
或None
,则使用len(s)
。 如果i大于或等于j ,则切片为空。
大胆强调我的。
自定义类型可以自由解释。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.