求教python数组、序列与迭代综合应用问题,python数组,In [18]: dic
求教python数组、序列与迭代综合应用问题,python数组,In [18]: dic
In [18]: dict = {'id':0}In [19]: q = []In [20]: for i in range(3): ....: q.append(dict) ....: q[i]['id'] = i ....: print q ....: [{'id': 0}][{'id': 1}, {'id': 1}][{'id': 2}, {'id': 2}, {'id': 2}]In [21]: print q[{'id': 2}, {'id': 2}, {'id': 2}]In [22]:
我想的序列 q 最后应该是
[{'id': 0}, {'id': 1}, {'id': 2}]
为什么会得出[{'id': 2}, {'id': 2}, {'id': 2}]? 求解释啊
自己的欠缺啊,对象传参是对 对象的引用
In [5]: import copyIn [6]: dict = {'id' : 1}In [7]: list = []In [8]: for i in range(3): ...: list.append(copy.deepcopy(dict)) ...: list[i]['id'] = i ...: print list ...: [{'id': 0}][{'id': 0}, {'id': 1}][{'id': 0}, {'id': 1}, {'id': 2}]
采用深复制解决问题
>>> map(lambda x: {'id': x}, range(3))[{'id': 0}, {'id': 1}, {'id': 2}]>>>
这个是你想要的吗?
因为 dict 在 q 只是一个引用. 所以 q 中的所有元素, 都是一样的, 你改变其中一个, 所有的都改变了.
最简单的改法:
>>> q = []>>> for i in range(3):... q.append({'id':0})... q[i]['id'] = i... print q...[{'id': 0}][{'id': 0}, {'id': 1}][{'id': 0}, {'id': 1}, {'id': 2}]>>> q[{'id': 0}, {'id': 1}, {'id': 2}]
编橙之家文章,
相关内容
- python 3版本程序在调用shell 指令怎么样才能获得返回值
- psycopg2使用遇到InternalError错误是什么原因,,执行完第
- 在python里面怎么样使用socket连接,pythonsocket连接,尝试连
- python中证明x的平方加上y的平方等于3,没有有理数解?
- pycharm运行scrapy除了cmd外还有别的吗,pycharmscrapy,目前启
- 使用Python解析豆瓣网API的源码解析,pythonapi,为何我在浏
- Python语法lft[-1]>=rgt[-1]应该怎么解读,lftrgt,def me
- 求Python遍历有元组的列表思路,python遍列表思路,item=
- pycharm4.0.5 ubuntu 14.10中文输入法问题跪求大神指点,,装
- 简单来说django app是个什么概念?,djangoapp概念,本人早
评论关闭