2

我不理解 Python 中列表的以下异常行为,如果有人能说明一下,我将不胜感激:

片段1:

myList = [1,2,3,4]
A = [myList]*3
print(A)
myList[2]=45
print(A)

输出:

[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
[[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]]

这对我来说很有意义,因为我们没有执行额外的复制功能来“屏蔽” A 免受 myList 上的元素操作的影响。

片段 2:

myList = [1,2,3,4]
A = myList*3
print(A)
myList[2]=45
print(A)

输出:

[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
[1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]

为什么对 myList 的更改未反映在 A 中?

4

1 回答 1

5

在第一种情况下,您myList直接复制 3 个引用。在第二种情况下,您复制了 3 个对内容的引用myList,这使您与原始myList.

于 2015-10-18T03:21:18.713 回答