顯示廣告
隱藏 ✕
看板 Programming
作者 z423x5c6 (z423x5c6)
標題 Re: 新手再度發問Python list問題
時間 2015年02月17日 Tue. PM 10:27:37


小弟是新手一個,嘗試用自己的方法解釋一下,如果說錯了希望各位大大指正:)
>>> m=[[0,0],[1,1]]
>>> n=m[:]
>>> print(id(m))
51689480
>>> print(id(n))
36056712
>>> print(id(m[0]),id(m[1]),id(n[0]),id(n[1]))
52011784 5588040 52011784 5588040
>>> import copy
>>> z=copy.deepcopy(m)
>>> print(id(z))
51685704
>>> print(id(z[0]),id(z[1]))
51691400 51685896

可以看出m,n,z是不同的「標籤」
但m,n裝著兩個相同的標籤,z則裝著不同的標籤
所以m[0],n[0]參考同一個東西(id為52011784的東西)
z[0]則參考不同的東西(id為51691400的東西)

>>> n[0]+=[2]
>>> print(m,n,z)
[[0, 0, 2], [1, 1]] [[0, 0, 2], [1, 1]] [[0, 0], [1, 1]]

因為m[0],n[0]是同一個東西,所以n[0]改變時m[0]也改變了
但z[0]是另一個東西,所以沒有改變

--
※ 作者: z423x5c6 時間: 2015-02-17 22:27:37
※ 看板: Programming 文章推薦值: 0 目前人氣: 0 累積人氣: 417 
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇
看板名稱: 確定(Enter) 取消(Esc) 搜尋(Space)
查詢帳號: 確定(Enter) 取消(Esc) 搜尋(Space)
搜尋: m)m文 b)進板 c)未分類 a)作者 /)標題 q)取消?[q]

搜尋 送出(Enter) 取消(Esc)

回覆文章至: f)看板 m)作者信箱 b)兩者皆是 q)取消?[f]
要引用原文嗎? y)引用原文 n)不引用 a)全部回覆 r)複製原文 q)取消?[y]
轉錄本文章於看板: 1)使用連結 2)使用複製 q)取消 ?[1]
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
轉寄至站內信箱於使用者: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc)
修改文章標題為: 確定(Enter) 取消(Esc) 全部(a)

確定要刪除這篇文章?(可按大U救回) 確定(Enter) 取消(Esc)

刪除理由:

確定(Enter) 取消(Esc)
加到這個分類: 確定(Enter) 下一層(→) 回上層(←) 取消(Esc)
你覺得這篇文章: 1)真讚 2)真瞎 q)取消?[1] (再選一次即可收回)
你覺得這篇文章: 1)值得推薦 2)表示反對 3)單純註解 q)取消?[3]
guest
預覽(Enter) 取消(Esc)
上傳圖片
按ctrl+Enter可輸入下一行。
guest
確定要送出? 確定(Enter) 取消(Esc) 繼續(e)
搜尋: 送出(Enter) 取消(Esc)

▏▎▍▌▋▊▉ 請按任意鍵繼續