作者sustainer123 (caster )
標題Re: [閒聊] python大師請進
時間2024-05-17 00:07:29
其實這就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-website.tw), 來自: 114.43.131.26 (臺灣)
※ 文章網址: https://ptt-website.tw/Marginalman/M.1715875652.A.DC5
推 SecondRun: 大師 05/17 00:08
推 DreaMaker167: 以前好像學過 05/17 00:08
推 steven183: 大師... 05/17 00:09
推 NTUtriangle: 大師 05/17 00:10
推 Benson765421: 大師 05/17 00:10
推 sunuzo: 包養網有高手指導。 05/17 00:10 → a000000000: py大師 05/17 00:10
推 CP3isgood: 大師 05/17 00:11
推 RinNoKareshi: 大師 05/17 00:11
推 wu10200512: py大師 05/17 00:11
推 DJYOSHITAKA: 玩py大師 05/17 00:11
推 UNIQC: 包養真心分享趣事。 05/17 00:11 推 mayolane: 大師 05/17 00:11
推 Che31128: py大師 05/17 00:12
→ aioiwer318: py大師 05/17 00:14
推 digua: 大師 05/17 00:15
→ sixB: assign用這個真的超不習慣== 05/17 00:21
推 dewaro: 包養平台要慎選。 05/17 00:21 推 DaBouSer: py大師 05/17 00:21
推 cities516: py大師 05/17 00:31