看板 Python 關於我們 聯絡資訊
:所以 list(a) 製造出來的新 list 中, 包含的項目與 a 的項目是同樣的東西 :注意不是值相同, 而是真的是「同一個」
vagic:抱歉我覺得最後一段有點怪 list(a)是copy喔 跟a不是同一個 08/27 09:52
vagic:東西 只是值相同(就是有兩條list) b=a才會指到同一個東西 08/27 09:53
vagic:也可能是我理解力不好 這裡只是為了澄清觀念 感謝 08/27 09:54
timTan:樓上要講reference 比較好 08/27 11:58
timTan:Reference 是強調內容物,list(a)本文有強調是新的了 08/27 12:16
ck574b027:原文是說"包含的項目"啊,並沒說a和list(a)指到同一地方 08/28 16:34
vagic:我困惑的是下一行:"注意不是值相同, 而是真的是「同一個" 08/28 18:07
vagic:不過感謝樓上兩位 我想我概念上有比較清楚 另外抱歉表達不好 08/28 18:09
恕刪 若 a 是個 list 的話,b = a 與 b = list(a) 之間唯一的不同就是 # 前者的表現 b = a b == a # True b is a # True b[0] == a[0] # True b[0] is a[0] # True # 後者的表現 b = list(a) b == a # True b is a # False b[0] == a[0] # True b[0] is a[0] # True 這樣就能知道不論用哪種方法,裡頭的元素的確不僅值一樣,連在記憶體中的位置也是, 這就是原po要表達的「真的是『同一個』」 至於 vagic 大大則是只看 a 和 b 這兩個 container 的相等性, 並且理解的行為也沒錯,用 list() 時真的會在記憶體裡放另一條 list。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.194.13.159
vagic:原來是這個意思!!哈哈 謝謝我瞭解了 所以應該可以說是list 08/29 11:56
vagic:裡面裝reference.. 恩感謝!! btw看到有人用id(a)check位置 08/29 12:00
ck574b027:is 就是用 id(),平常不需要用到那個函數。 08/29 14:46
vagic:謝謝樓上!! 08/30 06:18