Re: [閒聊] python大師請進已回收
看板Marginalman作者sustainer123 (caster )時間1年前 (2024/05/17 00:07)推噓14(14推 0噓 3→)留言17則, 17人參與討論串73/75 (看更多)
其實這就py淺複製的問題
淺複製就是給新變數一個新的記憶體位址但新變數內的元素跟原變數是一樣的
以你的例子為例
a = [[[]]*3 for _ in range(3)]
print(id(a[0]))
print(id(a[1]))
print(id(a[0][0]))
print(id(a[0][1]))
print(id(a[1][0]))
print(id(a[1][1]))
result:
2558576809792
2558576852544
2558576953472
2558576953472
2558576809664
2558576809664
我們可以發現元素都指向同一個位置
所以修改a[0][0].append(1)
a[0][0] a[0][1] a[0][2] 都會受影響
然後推文裡面cp3寫的就是深複製
深複製就是裡面元素的記憶體位址都不同
大概這樣
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.43.131.26 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1715875652.A.DC5.html
推
05/17 00:08,
1年前
, 1F
05/17 00:08, 1F
推
05/17 00:08,
1年前
, 2F
05/17 00:08, 2F
推
05/17 00:09,
1年前
, 3F
05/17 00:09, 3F
推
05/17 00:10,
1年前
, 4F
05/17 00:10, 4F
推
05/17 00:10,
1年前
, 5F
05/17 00:10, 5F
→
05/17 00:10,
1年前
, 6F
05/17 00:10, 6F
推
05/17 00:11,
1年前
, 7F
05/17 00:11, 7F
推
05/17 00:11,
1年前
, 8F
05/17 00:11, 8F
推
05/17 00:11,
1年前
, 9F
05/17 00:11, 9F
推
05/17 00:11,
1年前
, 10F
05/17 00:11, 10F
推
05/17 00:11,
1年前
, 11F
05/17 00:11, 11F
推
05/17 00:12,
1年前
, 12F
05/17 00:12, 12F
→
05/17 00:14,
1年前
, 13F
05/17 00:14, 13F
推
05/17 00:15,
1年前
, 14F
05/17 00:15, 14F
→
05/17 00:21,
1年前
, 15F
05/17 00:21, 15F
推
05/17 00:21,
1年前
, 16F
05/17 00:21, 16F
推
05/17 00:31,
1年前
, 17F
05/17 00:31, 17F
討論串 (同標題文章)