Re: [問題] 請教一個一樣是個很蠢的問題

看板Python作者 (Art of Life)時間17年前 (2007/06/29 18:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串5/8 (看更多)
※ 引述《chy1013m1 (alex.c)》之銘言: : 他說不是複製因為 assignment ('=') 在 python 裡面是一個 binding, name alias, 想成項 C 的 pointer那樣就行了, : 你在assign的那個list object視同一個 object, 要是你 addr = [1,2,3,4,5] 他就會有五個 '!' 不好意思...到這邊其實我還是不太懂......我沒有學過C....XD 真是對不起....(我會更努力的...orz....) : dd[D※ 引述《abliou (Art of Life)》之銘言: : : ........... : 4: [5, 6, 7, 8, '!', '!', '!', '!'] } : : 不好意思...這邊想請問h大... : : 因為我用同一份程式碼... : : a={} : : child=[5,6,7,8] : : a[1]=child : : a[1].append("!") : : ========結果============== : : a{1: [5, 6, 7, 8, '!']} 其實我有問題的就是這邊....因為原文的程式碼是這樣... ==== for x in addr: a[x]=children a[x].append(h) print a ===== 而我只是將他迴圈部份取出.. 也就是我只做 a[1]=child a[1].append("!") 他的結果是 {1: [5, 6, 7, 8, '!', '!', '!', '!'], 2: [5, 6, 7, 8, '!', '!', '!', '!'], 3: [5, 6, 7, 8, '!', '!', '!', '!'], 4: [5, 6, 7, 8, '!', '!', '!', '!'] } 但我的結果是 {1: [5, 6, 7, 8, '!']} 但是結果卻不會跟他一樣得到四個"!"..... 其實我的點就卡在這......這兩個到底是差別在那?? 這個for迴圈不只是重覆我的動作做一樣的事嗎?? 煩請解答一下........ : : 為什麼一樣是用append的方法...但是卻有不一樣的結果?? : : 可以勞煩解答一下嗎? : : 另外這邊是說a[x]不是複製...這又是什麼意思?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.50.103 ※ 編輯: abliou 來自: 140.124.50.103 (06/29 18:35)
文章代碼(AID): #16XD-Wgx (Python)
討論串 (同標題文章)
文章代碼(AID): #16XD-Wgx (Python)