(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] 以便您可以将它们转换为新值
我正在学习 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] 以便您可以将它们转换为新值