为了账号安全,请及时绑定邮箱和手机立即绑定

python 递归问题 与列表remove的疑问

python 递归问题 与列表remove的疑问

一只萌萌小番薯 2019-02-18 06:27:36
问题描述 为什么对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 就不一样了, 改变一个自然也就不会影响另一个了.

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 512 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信