(Python) 列表中切片函数的行为

(Python) Behaviour Of The Slice Function Within A List

我正在学习 Python 并且对 Slice 的工作方式有了基本的了解,但是有一个特定的代码块我很难掌握:

L = [2,4,6,8,0]

L[0:3] = [2,4,6,8]

print L[4]

这个输出是8,我觉得很奇怪;我希望它仍然是 0,因为我将第二行读为 "transform the first 4 elements of the list into 2,4,6,8." 这仍然会留下 [2,4,6,8,0] 的列表,这显然不会发生。如果有人能解释为什么 Slice 会这样,我将不胜感激!

>>> L = [2,4,6,8,0]
>>> L[0:3] = [2,4,6,8]
>>> L
[2, 4, 6, 8, 8, 0]

这改变了列表,L[0:3][2, 4, 6],所以你在 6 之后追加另一个 8,这就是为什么第四个值现在是 8

>>> L[4]
8

看看这张图:

所以也许您想要的是 L[0:4]L[:4]。希望这对您有所帮助。

输出是 8 因为当你做的时候:

L[0:3] = [2,4,6,8]

您要在列表末尾添加一个额外的 8 [2,4,6,8]:

L[0:3] = [2,4,6,8]
print(L)

L[0:3] 的长度为 3,您为其分配了 4 个值。这就是为什么会这样。

输出:

[2, 4, 6, 8, 8, 0]

如您所见,L[4] 现在是 8

你应该做

L = [2,4,6,8,0]
L[0:4] = [2,4,6,8]
print L[4]

得到0

因为如果

L = [2,4,6,8,0]
L[0:3] 

指的是

[2,4,6]

L[0:4] 

指的是

[2,4,6,8]

因此在您的示例中,我认为您需要 L[0:4] 以便您可以将它们转换为新值