[問題] 請問for裡值的記憶體位址

看板Python作者時間6年前 (2019/02/25 09:30), 6年前編輯推噓2(204)
留言6則, 3人參與, 6年前最新討論串1/1
numlist = [0] print(id(numlist[0])) for index, i in enumerate(numlist): print(id(i)) print(id(numlist[index])) numlist[index] = 100 i = 100 print(id(i)) print(id(numlist[index])) 輸出的結果是 8791232734000 8791232734000 8791232734000 8791232737200 8791232737200 也就是i跟numlist[index]的記憶體位址是一樣的 那為什麼i = 100不會改變numlist裡的值 而用numlist[index] = 100卻可以 另外發現賦值之後記憶體的位址也變了 請問這邊的運作方式是怎樣的呢 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.231.86.211 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1551058216.A.DF1.html

02/25 11:27, 6年前 , 1F
i=100 # i指向另一塊值為100的記憶體
02/25 11:27, 1F

02/25 13:02, 6年前 , 2F
因為你看錯輸出的結果了,我自己跑的結果只有id(i)有變
02/25 13:02, 2F

02/25 13:02, 6年前 , 3F
,謝謝
02/25 13:02, 3F
我的意思是,不管是i或numlist[index],賦值後位址都變了。這個片段numlist[index]賦 值部分被註解掉我是知道的。

02/25 14:54, 6年前 , 4F
lemon的意思是你輸出的結果最後一行會是8791232734000
02/25 14:54, 4F

02/25 14:54, 6年前 , 5F
而不是8791232737200
02/25 14:54, 5F
我貼錯結果了,那個結果是沒有註解掉的,應該要把那行註解拿掉才對。

02/25 16:57, 6年前 , 6F
www.laurentluce.com/posts/python-integer-objects-implemen
02/25 16:57, 6F
感謝樓上分享這篇文章 ※ 編輯: jijuan (125.231.86.211), 02/25/2019 19:30:01
文章代碼(AID): #1SSqKetn (Python)
文章代碼(AID): #1SSqKetn (Python)