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