看板 Marginalman 關於我們 聯絡資訊
其實這就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
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
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
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
DaBouSer: py大師 05/17 00:21
cities516: py大師 05/17 00:31