問題描述
為什么對code_3進(jìn)行操作,會影響code_2的值呢?本來兩者是沒有關(guān)系的呀。
問題出現(xiàn)的環(huán)境背景及自己嘗試過哪些方法
個(gè)人理解 我在前幾行代碼進(jìn)行 賦值 ,在for循環(huán)里操作,不會影響 code——2的值,但是我debug發(fā)現(xiàn),code_2的值也發(fā)生了改變。。不懂為什么會這樣,Python 不是逐行翻譯的嗎。。
相關(guān)代碼
// 請把代碼文本粘貼到下方(請勿用圖片代替代碼)
code=[1,2,3,4,5]
code_1=code
# ————————————————————
for i in code: # code 是 含 'A'這樣的數(shù)組
print(i)
for k in code_1:
print(k)
code_1.remove(i)
你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?
我期待的是:code和code_1互相不影響,可是 我刪除了code1的元素,為啥code 元素也會被刪除 。。。
1 回答

互換的青春
TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
如不想被改變,你需要拷貝, 而不是賦值
如
code_2=code.copy()
賦值后, 對象的引用是一個(gè)
>>> code=[1,2,3,4]
>>> id(code)
4552379656
>>> code2=code
>>> id(code2)
4552379656
可以看到他們的 ID是相等的, 指向內(nèi)存里的同一個(gè)地址(對象).改變一個(gè)自然會影響到另一個(gè)
copy 或 用list
或[:]
方法重建一個(gè), id 就不一樣了, 改變一個(gè)自然也就不會影響另一個(gè)了.
添加回答
舉報(bào)
0/150
提交
取消