作者whitefur (白毛)
看板Python
標題Re: [問題] 新手發問List資料複製
時間Wed Sep 19 12:09:26 2012
上一篇g大提供了答案
而我來回一下你原本的方法錯在哪
※ 引述《mjchen ( )》之銘言:
: 各位老手大家好,我有一個不知道該如何問起的問題
: 手邊有一個List如下
: list = [1, 2, 3, 4, 5]
: 之後會對這個List的資料做變更,但是又希望能保留過去完整的資料
: 如果這樣寫
: list = [1, 2, 3, 4, 5]
: newList = list
^^^
這裡的等於是把等號右邊的值assign給等號左邊的值
事實上,python裡的物件的變數的值不是物件本身
而是物件的位置
所以這一行執行之後的結果就是
newList跟list的值都是同一塊記憶體位置
例如
[1,2,3,4,5]在14956384這個位置 ┌───────┐
│ │
newList = list ○ ────→[1, 2 ,3, 4, 5]│
^^^^^^^ ^^^^ ^^^^ │ │
14956384 14956384 list、newList └───────┘
^^^^^^^
newList.pop() 我就是14956384
^^^^^^^^^^^^^^
事實上就是14956384.pop() ←當然語法上不能這樣寫
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.232.218.12
推 mjchen:謝謝G大用心講解+繪圖....現在再來看,看懂了~感謝你! 09/26 00:56
→ mjchen:太瞎...我是說"W"大(我眼殘) 09/26 00:57