2015-10-18 165 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