【发布时间】:2013-11-25 22:31:09
【问题描述】:
我有一个列表,我创建了一个副本,以便在保留原始列表的同时进行一些操作。但是,当我将copy_list 设置为等于org_list 时,它们变成了相同的东西,如果我更改copy_list,org_list 也会发生变化。例如:
org_list = ['y', 'c', 'gdp', 'cap']
copy_list = org_list
copy_list.append('hum')
print(copy_list)
print(org_list)
返回
['y', 'c', 'gdp', 'cap', 'hum']
['y', 'c', 'gdp', 'cap', 'hum']
我不太了解实际发生的情况,但看起来 org_list 实际上将自己传递给 copy_list,因此它们实际上是同一件事。
有没有一种方法可以制作 org_list 的独立副本而不会做一些笨拙的事情:
copy_list = []
for i in org_list:
copy_list.append(i)
我这样说是因为我对其他类型的变量也有同样的问题,例如 pandas 数据框。
【问题讨论】:
-
Python 中的赋值不创建新对象 - 赋值仅在 [变量] 名称和对象之间建立绑定。这应该解释一切,而不是谈论“参考”。
标签: python