为什么当sequence[1:]
或sequence[1:n] (where n >= sequence length)
成功返回列表尾部时,sequence[1:0]
返回空列表?
我很确定这与 python 迭代循环的方式有关,但我无法理解为什么它不起作用,因为它适用于小于零的数字。
例:
>>> l = [1,2,3,4]
>>> l[1:]
[2,3,4]
>>> l[1:100]
[2,3,4]
>>> l[1:0]
[]
>>> l[1:0:1]
[]
>>> l[1:-2]
[2]
要向后获取元素,您需要将步骤作为负值传递
l = [1,2,3,4]
print l[1:0:-1]
# [2]
当你说l[1:0]
Python 将步长值作为 1 时,默认情况下,step
是1
.
当step
大于0且start
大于等于stop
时,要返回的切片的长度将设置为0。因此,将返回一个空列表。
if ((*step < 0 && *stop >= *start) || (*step > 0 && *start >= *stop)) {
*slicelength = 0;
}
当你对start
或stop
使用负索引时,Python 会为其添加序列的长度。