Python2:列表拆分语法 - 列表的尾部

时间:2014-03-06 08:22:00

标签: python list python-2.7 sequence slice

sequence[1:0]sequence[1:]成功返回列表尾部时,为什么sequence[1:n] (where n >= sequence length)会返回一个空列表?

我很确定它与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]

1 个答案:

答案 0 :(得分:1)

要向后移动元素,您需要将步骤作为负值传递

l = [1,2,3,4]
print l[1:0:-1]
# [2]

当你说l[1:0] Python需要the step value as 1, by default, step is 1时。

step is greater than 0 and start is greater than or equal to stop时,要返回的切片的长度将设置为0.因此,将返回一个空列表。

if ((*step < 0 && *stop >= *start) || (*step > 0 && *start >= *stop)) {
    *slicelength = 0;
}

当您对startstop使用负索引时,Python会将序列的长度添加到其中。