python列出类型转换和设置值

时间:2014-06-21 06:21:13

标签: python list casting

我正在尝试这个

>>> 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] ???

1 个答案:

答案 0 :(得分:2)

list(x)创建了一个新的顶级列表,因此更改其顶级值(如10.5)将不会传播到x。另一方面,内部列表是一个引用,因此它的更改在包含它的所有容器之间共享,因为它们都包含完全相同的对象。如果您想要x的单独副本,请使用copy.deepcopy