我有一个列表,我创建了一个副本,以便在保留原始列表的同时进行一些操作。但是,当我将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
,所以它们实际上是一样的。
有没有一种方法可以制作一份独立的组织列表副本,而不必做一些笨拙的事情,比如:
copy_list = []
for i in org_list:
copy_list.append(i)
我这么说是因为我对其他类型的变量也有同样的问题,例如pandas数据框。
这只是复制参考资料
你应该用
或者
这是因为在python中设置变量实际上设置了对该变量的引用。几乎每个学习python的人都会在某个时候遇到这种情况。解决方案只是复制列表:
当你写作时
创建list对象,并将其命名为“org_list”。
当你这样做的时候
你的意思是,“名称复制列表与组织列表所指的对象相同”。
如果列表只包含不可变类型,则可以通过
但请注意,只有当列表对象是不可变的时,这才有效,因为它会创建一个浅层副本,即复制列表,但列表中的每个元素都不会重复。
如果您有一个列表列表,并且想要复制所有内容,则需要执行一个深度复制:
相关问题 更多 >
编程相关推荐