问题:使用append为list添加object的时候,有时候会出现后面的object将前面的几个给覆盖的情况
原因:当在list中append一个对象的时候,并没有创建新的内存地址,而是将该对象的地址引用了过来,这就导致当该对象变化的时候,前面append进来的对象也会跟着变化。
例子代码:
list = []
item = {}
for i in range(3,3):
item[1] = i
list.append({'item':item})
print(list)
结果:[{'item': {1: 2}}, {'item': {1: 2}}, {'item': {1: 2}}]
解决方式:使用深度拷贝 deepcopy ,复制出一个新的对象并使用。
例子代码:
import copy
list = []
item = {}
for i in range(0,3):
item[1] = i
list.append(copy.deepcopy({'item':item}))
print(list)
结果:[{'item': {1: 0}}, {'item': {1: 1}}, {'item': {1: 2}}]
Post Views: 3,309