2015-10-18 123 views
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]] 

这对我来说很有意义,因为我们没有在myList中的元素操作执行额外的复制功能“盾” A。

片段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中没有反映在甲?

+0

因为只有在分配“A”后才为mylist [2]赋值。 –

回答

5

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