为什么更改内部元素会更改复制列表的元素,但更改整个元素不会更改

问题描述 投票:0回答:1

我了解 Python 中的深层复制,但我需要准确解释更改 a 的第一个元素后会发生什么,或者可能解释发生在这里。

>>> a=[[0,1],[2,3]]
>>> b=list(a)
>>> a
[[0, 1], [2, 3]]
>>> b
[[0, 1], [2, 3]]
>>> a[0]=[9,10]
>>> a
[[9, 10], [2, 3]]
>>> b
[[0, 1], [2, 3]]
>>> a[1][0]=11
>>> a
[[9, 10], [11, 3]]
>>> b
[[0, 1], [11, 3]]
>>> 
python list deep-copy
1个回答
0
投票

b = list(a)
是浅拷贝。
b
是一个新列表,其中引用了与
a

相同的内部列表

a[0]=[9,10]
更改
a
中的第一个内部列表引用。这不会影响
b

a[1][0]=11
修改
a
第二个内部列表的第一个元素。这反映在
b
中,因为
a
&
b
仍然共享对第二个内部列表的相同引用

© www.soinside.com 2019 - 2024. All rights reserved.