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

看板Python作者 (Art of Life)時間17年前 (2007/06/29 19:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串7/8 (看更多)
※ 引述《CHRyo (絕體絕命自由客)》之銘言: : a={} : addr = [1,2,3,4] : children=[5,6,7,8] : h="!" : for x in addr: : a[x]=children 這邊也就是說..a[x]會將children的ref傳到a[x]中.... 也就是說其實a[1],a[2],a[3],a[4]都將會指向同一個array... : a[x].append(h) 當這邊開始做append的方法時....其實都是對children這一個array做.. 因此最後迴圈跑四次....後面就增加四個"!".... : print a : ========================================================== : 執行結果 : {1: [5, 6, 7, 8, '!', '!', '!', '!'], : 2: [5, 6, 7, 8, '!', '!', '!', '!'], : 3: [5, 6, 7, 8, '!', '!', '!', '!'], : 4: [5, 6, 7, 8, '!', '!', '!', '!'] } 而最後print出來後....1,2,3,4這四個keys其實都是指向同一個array... 而不是分別四個... 真是感謝各位...我懂了..... : 請問為什麼會有[5,6,7,8]後面會有4個"!"而不是只有1個? : 如果我只要1個應該怎麼改呢? : 謝謝 為了要了解這些....所以我做一些實驗.... child=[1,2,3,4] addr=[5,6,7,8] a={} for x in addr : a[x]=child a[x].append('!') ===結果======== {8: [1, 2, 3, 4, '!', '!', '!', '!'], 5: [1, 2, 3, 4, '!', '!', '!', '!'], 6: [1, 2, 3, 4, '!', '!', '!', '!'], 7: [1, 2, 3, 4, '!', '!', '!', '!']} =====================又加了以下程式碼============== child[2]=33 ====結果======= {8: [1, 2, 33, 4, '!', '!', '!', '!'], 5: [1, 2, 33, 4, '!', '!', '!', '!'], 6: [1, 2, 33, 4, '!', '!', '!', '!'], 7: [1, 2, 33, 4, '!', '!', '!', '!']} -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.50.103 ※ 編輯: abliou 來自: 140.124.50.103 (06/29 19:07)
文章代碼(AID): #16XEQ6Ql (Python)
討論串 (同標題文章)
文章代碼(AID): #16XEQ6Ql (Python)