浅拷贝操作混乱

2024-04-19 20:13:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图理解python中浅层复制的代码操作背后的含义

创建了一个对象

o = [1,12,32,423,42,3,23,[1,2,3,4]]

创建一个浅拷贝并分配给一个变量

r = copy.copy(o)

print(r)
[1, 12, 32, 423, 42, 3, 23, [1, 2, 3, 4]]

然后尝试在两个不同的索引中分配新值

o[1]="ff"
o[7][1]="kk"


print(r)
[1, 12, 32, 423, 42, 3, 23, [1, 'kk', 3, 4]]

所以根据浅拷贝,它在子变量中创建父变量的引用,所以当我们更改父变量时,它反映在子变量中,但这里的引用只在子列表中更改。为什么会这样?你知道吗


Tags: 对象代码列表printffcopy含义浅层
1条回答
网友
1楼 · 发布于 2024-04-19 20:13:00

试着通过运行下面的代码(在修改之后)来观察发生了什么:

print(id(r[1]))
print(id(o[1]))    # different

print(id(r[7]))
print(id(o[7]))    # same

print(id(r[7][1]))
print(id(o[7][1])) # same

另外,阅读其他人发布的链接。你知道吗

相关问题 更多 >