python:对我的复制变量的更改会影响原始变量[重复]

2024-12-30 08:41:00
admin
原创
42
摘要:问题描述:我有一个列表,我创建了它的副本,以便在保留原始列表的同时进行一些操作。但是,当我将 设置copy_list为 时org_list,它们会变成相同的东西,如果我更改copy_list,org_list也会更改。例如:org_list = ['y', 'c', 'gdp', 'cap'] copy_l...

问题描述:

我有一个列表,我创建了它的副本,以便在保留原始列表的同时进行一些操作。但是,当我将 设置copy_list为 时org_list,它们会变成相同的东西,如果我更改copy_listorg_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)
相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1008  
  在项目管理中,变更是一个不可避免的现象。无论是客户需求的调整、市场环境的变化,还是技术方案的更新,都可能引发项目的变更。如果处理不当,这些变更可能会导致项目延期、成本超支,甚至项目失败。因此,如何有效地应对项目变更,成为项目管理中的核心挑战之一。IPD(集成产品开发)作为一种高效的项目管理方法,其流程图不仅能够帮助团队...
IPD流程中的charter   0  
  IPD(Integrated Product Development,集成产品开发)是华为在长期实践中总结出的一套高效产品开发管理体系。它不仅帮助华为在全球市场中脱颖而出,也成为许多企业提升产品开发效率的参考标杆。IPD的核心在于通过跨部门协作、流程优化和资源整合,实现从需求分析到产品交付的全生命周期管理。通过实施IP...
IPD开发流程管理   0  
  华为IPD(集成产品开发)流程是一种以客户需求为导向、跨部门协同的高效项目管理方法。它通过系统化的流程设计和严格的阶段控制,确保项目从概念到交付的每个环节都能高效运作。IPD流程的核心在于打破传统职能部门的壁垒,将产品开发、市场、销售、供应链等关键环节整合到一个统一的框架中,从而实现资源的优化配置和信息的无缝流动。这种...
IPD流程中TR   0  
  在项目管理的实践中,CDCP(Certified Data Center Professional)认证评审是一个至关重要的环节。通过这一评审,项目团队不仅能够验证其数据中心设计和运营的合规性,还能提升整体管理水平。为了确保评审的顺利进行,准备一系列关键文档是必不可少的。这些文档不仅是评审的依据,也是项目团队与评审专家...
华为IPD是什么   0  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用