问题描述
在编写 Python 代码时,对同一名称的变量进行初始化,并 append 到某一列表。检查时发现,获得的列表所有元素都是刚初始化后的变量数据。
原因分析:
>> append方法是浅拷贝
在 Python 中,对象赋值实际上是对象的引用,当创建一个对象,然后把它赋值给另一个变量的时候,Python 并没有拷贝这个对象,而只是拷贝了这个对象的引用。
解决方案:
使用深拷贝写入数据 list.append(copy.deepcopy(item))
其中,list为列表名称,item为数据名称。
参考资料:
[1] 《Python进阶系列》二十九:append浅拷贝机制——你真的会用append函数吗?