我正在用python切片列表,无法解释一些结果。以下两种情况对我来说都很自然:
>>>[0,1,2,3,4,5][1:4:1]
[1, 2, 3]
>>>[0,1,2,3,4,5]
[::-1] == [5,4,3,2,1,0]
然而
>>>[0,1,2,3,4,5][1:4:-1]
[]
以为我期望它是[3,2,1]。为什么会产生 [ ]?为什么它不反转列表?在python内部首先发生什么,步骤或切片?
我还发现
>>>[0,1,2,3,4,5][-3:-6:-1]
[3,2,1]
切片中的第三个数字是步数。所以,在[0,1,2,3,4,5][1:4:-1]
中,切片从1
开始,下降1
直到小于4
,即立即。尝试这样做:
>>> [0,1,2,3,4,5][4:1:-1]
[4, 3, 2]
如果你正在切片,那么切片将看起来像这样[start:end:step]
。对于这个:
>>> [0,1,2,3,4,5][1:4:1]
[1, 2, 3]
它从索引 1 盯着索引 3,因为它一次以 1 步排除索引 4。您在第二个索引中得到一个空列表,因为您正在从第一个索引步进 -1。所以这将是解决方案。
>>> [0,1,2,3,4,5][4:1:-1]
[4, 3, 2]
这是有效的,因为您将索引从 4 变为 1,向前迈出 -1 步。