以下代码包含最后一个数字。
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[::3]
[1, 4, 7, 10]
为什么不包括最后一个数字2,如10,8,6,4,2?
>>> numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> numbers[:1:-2]
[10, 8, 6, 4]
答案 0 :(得分:4)
切片运算符似乎不包含第二个参数。换句话说,您的1
应该是0
:
>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[:1:-2]
[10, 8, 6, 4]
>>> numbers[:0:-2]
[10, 8, 6, 4, 2]
希望有所帮助:)
有关详细信息,请参阅注释5 here。
答案 1 :(得分:2)
::用N步走过列表。所以它是1,然后它转到4,等等。如果你想向后退2,你想要[:: - 2]
答案 2 :(得分:2)
Python遵循序列范围的模式是非常一致的,这些模式是低级别的,高级别的。也就是说,如果你说范围(1,5) - > [1,2,3,4]。包含较低的索引,排除较高的索引。这对于各种各样的off-by-one和fencepost错误有很大帮助。有关这些问题的简要说明,请参阅wikipedia。
答案 3 :(得分:0)
因为切片排除了范围中的第二个数字。 a[1:4]
提取元素1,2和3.同样,a[10:6:-1]
提取元素10,9,8和7,但不提取6。