python:对我的复制变量的更改会影响原始变量[重复]
- 2024-12-30 08:41:00
- admin 原创
- 43
问题描述:
我有一个列表,我创建了它的副本,以便在保留原始列表的同时进行一些操作。但是,当我将 设置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 数据框。
解决方案 1:
这是因为在 Python 中设置变量实际上设置了对该变量的引用。几乎每个学习 Python 的人都会在某个时候遇到这种情况。解决方案很简单,就是复制列表:
copy_list = org_list[:]
解决方案 2:
当你写作时
org_list = ['y', 'c', 'gdp', 'cap']
您创建列表对象,并将其命名为“org_list”。
然后当你
copy_list = org_list
您的意思是“名称 copy_list 指的是与 org_list 相同的对象”。
如果你的列表只包含不可变类型,那么你可以通过以下方式创建副本
copy_list = list(org_list)
但请注意,这仅在列表对象不可变时才有效,因为它会创建浅副本,即列表被复制,但列表上的每个元素都不会重复。
如果您有一个列表列表并且想要复制所有内容,则需要执行深度复制:
import copy
org_list = ['y', 'c', ['gdp', 'rtd'], 'cap']
copy_list = copy.deepcopy(org_list)
解决方案 3:
这只是复制参考
copy_list = org_list
你应该使用
copy_list = org_list[:] # make a slice that is the whole list
或者
copy_list = list(org_list)
解决方案 4:
Python 中的变量名是对原始变量的引用。要真正进行复制,您需要明确:
import copy
copy_list = copy.copy(org_list)
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD