2014-06-21 55 views
1

我試圖這一點Python列表類型轉換和設置值

>>> x = [[1, 2, 3], 10.5] 
>>> z = list(x) 
>>> z[1] = 10.6 
>>> z 
[[1, 2, 3], 10.6] 
>>> x 
[[1, 2, 3], 10.5] 
>>> z[0][2] = 5 
>>> z 
[[1, 2, 5], 10.6] 
>>> x 
[[1, 2, 5], 10.5] 

爲什麼的變化被反映在X [0] [2]?同樣不在x中[1]?

回答

2

list(x)創建了一個新的頂級列表,因此更改其頂級值(如10.5)不會傳播到x。另一方面,內部列表是一個引用,因此對它的更改將在包含它的所有容器之間共享,因爲它們都包含完全相同的對象。如果您想單獨複製x,請使用copy.deepcopy