我似乎无法理解Python中的以下行为:
x = [0, [1,2,3,4,5],[6]]
y = list(x)
y[0] = 10
y[2][0] = 7
print x
print y
它输出:
[0, [1, 2, 3, 4, 5], [7]]
[10, [1, 2, 3, 4, 5], [7]]
为什么x和y的第二个索引被更新,而只有y的第一个索引被更新?
我似乎无法理解Python中的以下行为:
x = [0, [1,2,3,4,5],[6]]
y = list(x)
y[0] = 10
y[2][0] = 7
print x
print y
它输出:
[0, [1, 2, 3, 4, 5], [7]]
[10, [1, 2, 3, 4, 5], [7]]
list(x)
创建了列表x
的浅层副本。x
中的一些元素本身就是列表。对于它们不会创建副本,而是作为引用传递。这样,x
和y
最终都引用同一个列表作为元素。import copy
y = copy.deepcopy(x)