我正在学习Python并且对Slice的工作方式有基本的把握,但是我抓住了一段特殊的代码块:
L = [2,4,6,8,0]
L[0:3] = [2,4,6,8]
print L[4]
这个输出是8,我觉得很奇怪;我认为它仍然是0,因为我读第二行是“将列表的前4个元素转换为2,4,6,8”。这仍然会留下[2,4,6,8,0]的清单,这显然没有发生。如果有人能解释为什么Slice的表现如此,我将不胜感激!
答案 0 :(得分:4)
>>> 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]
。希望这有帮助。
答案 1 :(得分:2)
输出为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
答案 2 :(得分:0)
你应该这样做
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],以便你可以将它们转换为新的值