免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: yuechaotian
打印 上一主题 下一主题

python 的list类型 append 数据时的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2011-10-13 17:18 |只看该作者
本帖最后由 longsu2010 于 2011-10-13 17:19 编辑

python版本为2.5.4
测试问题如下:

>>> result=[]
>>> dict={'a': ''}
>>>
>>> dict['a']='f1'
>>> result.append(dict)   将一个字典的引用加在列表的末尾,其实质是dict和result[0]指向了同一块内存地址。所以他们两个是同步更新的。
>>> result
[{'a': 'f1'}]
>>>
>>> dict['b']='f2'
>>> result.append(dict)
>>>
>>> result
[{'a': 'f1', 'b': 'f2'}, {'a': 'f1', 'b': 'f2'}]  

在append第二个值时,第一个值同时也被更新了!


append常量时候就没问题:

>>> result=[]
>>> result.append({'a': 'f1'}) 这是添加第一个字典
>>> result
[{'a': 'f1'}]
>>> result.append({'a': 'f1','b':'f2'}) 这是添加第二个字典,与第一个字典内存不同的字典
>>> result
[{'a': 'f1'}, {'a': 'f1', 'b': 'f2'}]

有哪位高手知道原因吗?

基础差不要紧,都是从差过来的,慢慢来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP