为什么n=[1,2,3,4,5,6,7,8],n[:6:-2]在Python中是[8]?

为什么n=[1,2,3,4,5,6,7,8],n[:6:-2]在Python中是[8]?,python,list,data-structures,Python,List,Data Structures,我认为结果应该是[6,4,2]而不是[8] 更让我吃惊的是,当我明确地对列表进行切片时,n[0:6,-2],那么输出就是[] 我检查了文档,注意到浅拷贝,因此仍然不知道引擎盖下发生了什么要实现[6,4,2]你需要在列表上向后走,所以首先你需要六个,它在列表上的位置,它的5,第一部分已经完成,其次,您基本上希望向后迭代2个位置,直到没有更多的列表 n=[1,2,3,4,5,6,7,8] n[:6:-2] #[8] 请记住,您尝试向后走,因此第一个应该是开始位置,第二个是结束位置,最后是步数(-

我认为结果应该是
[6,4,2]
而不是
[8]
更让我吃惊的是,当我明确地对列表进行切片时,
n[0:6,-2]
,那么输出就是
[]


我检查了文档,注意到
浅拷贝
,因此仍然不知道引擎盖下发生了什么

要实现
[6,4,2]
你需要在列表上向后走,所以首先你需要六个,它在列表上的位置,它的5,第一部分已经完成,其次,您基本上希望向后迭代2个位置,直到没有更多的列表

n=[1,2,3,4,5,6,7,8] 
n[:6:-2] #[8]

请记住,您尝试向后走,因此第一个应该是开始位置,第二个是结束位置,最后是步数(-2)。

如果您想向后迭代,从右侧的第三个元素开始,这是正确的表示法

n = [1,2,3,4,5,6,7,8]

n[5:0:-2] // result [6,4,2]
好的,让我解释一下:

在解决问题之前,让我们先了解切片的两个概念:

n=[1,2,3,4,5,6,7,8] 
print n[len(n)-3::-2]
>[6, 4, 2]
单步切片:

First concept :
第二个概念:

你也可以一片一片地做:

a[start:end:step] # start through not past end, by step
输出:

n=[1,2,3,4,5,6,7,8]
print(n[3:][2:])
n=[1,2,3,4,5,6,7,8]
print(n[::-1])
n=[1,2,3,4,5,6,7,8]
print(n[::-1][0:len(n):2])
n=[1,2,3,4,5,6,7,8]
print(n[::-1][0:len(n):2][1:])
现在回到您的问题,让我们一步一步地解决它:

首先反转字符串:

[6, 7, 8]
输出:

n=[1,2,3,4,5,6,7,8]
print(n[3:][2:])
n=[1,2,3,4,5,6,7,8]
print(n[::-1])
n=[1,2,3,4,5,6,7,8]
print(n[::-1][0:len(n):2])
n=[1,2,3,4,5,6,7,8]
print(n[::-1][0:len(n):2][1:])
然后给出步骤=2:

[8, 7, 6, 5, 4, 3, 2, 1]
输出:

n=[1,2,3,4,5,6,7,8]
print(n[3:][2:])
n=[1,2,3,4,5,6,7,8]
print(n[::-1])
n=[1,2,3,4,5,6,7,8]
print(n[::-1][0:len(n):2])
n=[1,2,3,4,5,6,7,8]
print(n[::-1][0:len(n):2][1:])
现在,根据需要从结果中切片:

[8, 6, 4, 2]
输出:

n=[1,2,3,4,5,6,7,8]
print(n[3:][2:])
n=[1,2,3,4,5,6,7,8]
print(n[::-1])
n=[1,2,3,4,5,6,7,8]
print(n[::-1][0:len(n):2])
n=[1,2,3,4,5,6,7,8]
print(n[::-1][0:len(n):2][1:])

你想达到什么目标?或者这只是一个理解的问题?你可能想看这个:[a link][a link],但这并不能回答他的问题:
[n:6,-2]
为什么会导致
[8]
?让我们慢慢来看看你在做什么,如果你只做了n[:6],你会得到所有的东西,直到第六位,[1,2,3,4,5,6],如果你只做n[::-2]你会得到一个倒转的列表,每第二个元素,[8,6,4,2],当你把所有元素放在一起时,你会得到倒转的列表,直到第六位,也就是[8],如果你在列表上加上9和10,你会得到[10,8],我不知道我是否解释得很好,如果您不明白,请告诉我,我会尽量解释得更清楚一点,因为我有点急急忙忙,所以阶跃符号表示遍历方向(还原切片结束和开始),
abs(step)
是遍历阶跃length@ChwengMega是的,它表示的语法与我在该语法中显示的相同。如果我的问题解决了你的问题,你可以接受答案。