问题描述
为什么对code_3进行操作,会影响code_2的值呢?本来两者是没有关系的呀。
问题出现的环境背景及自己尝试过哪些方法
个人理解 我在前几行代码进行 赋值 ,在for循环里操作,不会影响 code——2的值,但是我debug发现,code_2的值也发生了改变。。不懂为什么会这样,Python 不是逐行翻译的吗。。
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
code=[1,2,3,4,5]
code_1=code
# ————————————————————
for i in code: # code 是 含 'A'这样的数组
print(i)
for k in code_1:
print(k)
code_1.remove(i)
你期待的结果是什么?实际看到的错误信息又是什么?
我期待的是:code和code_1互相不影响,可是 我删除了code1的元素,为啥code 元素也会被删除 。。。
1 回答
互换的青春
TA贡献1797条经验 获得超6个赞
如不想被改变,你需要拷贝, 而不是赋值
如
code_2=code.copy()
赋值后, 对象的引用是一个
>>> code=[1,2,3,4]
>>> id(code)
4552379656
>>> code2=code
>>> id(code2)
4552379656
可以看到他们的 ID是相等的, 指向内存里的同一个地址(对象).改变一个自然会影响到另一个
copy 或 用list
或[:]
方法重建一个, id 就不一样了, 改变一个自然也就不会影响另一个了.
添加回答
举报
0/150
提交
取消