推 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