作者abliou (Art of Life)
看板Python
标题Re: [问题] 请教一个一样是个很蠢的问题
时间Fri Jun 29 19:01:25 2007
※ 引述《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)