猿问

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

问题描述

为什么对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 元素也会被删除 。。。

一只萌萌小番薯
浏览 513回答 1
微课
1回答

互换的青春

如不想被改变,你需要拷贝, 而不是赋值如 code_2=code.copy() 赋值后, 对象的引用是一个 >>> code=[1,2,3,4] >>> id(code) 4552379656 >>> code2=code >>> id(code2) 4552379656 可以看到他们的 ID是相等的, 指向内存里的同一个地址(对象).改变一个自然会影响到另一个copy 或 用list 或[:] 方法重建一个, id 就不一样了, 改变一个自然也就不会影响另一个了.
随时随地看视频慕课网APP

相关分类

Python
我要回答