如何更改列表中的元素并保留原始列表的副本?

2024-06-20

我四处搜寻并尝试了很多东西,但我无法让它发挥作用。我认为问题与 Python 列出名称的方式有关point到列表中,而不是being实际的列表,但我仍然无法弄清楚。情况是这样的(这是一个字典列表):

list_original = [dictionary1, dictionary2, dictionary3]
dictionary2_modified = dictionarymodifier(dictionary2) #some function that modifies the chosen element
list_modified = [i for i in list_original] #makes copy of original list
for i,n in enumerate(dictionary_original):
    if i==1:
        list_modified[1] = dictionary2_modified #replaces element with modified version
return list_original, list_modified

还有很多类似的事情,但我总是要么得到两个原始列表,要么得到两个新列表!我补充说我正在使用 python 2.4 并且没有选择。

非常感谢您的帮助


可变与不可变

您需要了解可变元素和不可变元素之间的区别。也就是说,Python 中的字典和列表都是mutable。这意味着,如果您在一个地方修改它,那么在其他地方也会修改它。

另外,可变类型的变量(例如list or dict)可以包含不可变元素(例如str),以及相反的方式:不可变类型的变量(例如tuple)可以包含可变元素(例如list or dict).

可变性示例

因此,这使用列表的示例显示了可变性:

>>> a = [1, 2, 3, 4]
>>> b = a
>>> a
[1, 2, 3, 4]
>>> b
[1, 2, 3, 4]
>>> a[2] = 'x'
>>> a
[1, 2, 'x', 4]
>>> b
[1, 2, 'x', 4]

如何获取列表或字典的副本

获取副本list,你只需这样做:

new_list = old_list[:]  # the slicing at the end just takes the whole list

的情况下dict这通常就足够了:

new_dict = old_dict.copy()

嵌套列表/字典

然而,虽然平面或仅包含可变元素的列表/字典可以按照我展示的方式进行复制,但要获得更复杂的可变数据结构的副本,您需要做更多的事情......

在这种情况下,非常有帮助的可能是copy模块及其deepcopy功能 http://docs.python.org/2/library/copy.html#copy.deepcopy。的文档copy模块详细说明了其用途:

Python 中的赋值语句不会复制对象,而是在目标和对象之间创建绑定。对于可变或包含可变项的集合,有时需要一份副本,以便可以更改一个副本而不更改另一个副本。该模块提供通用的浅复制和深复制操作(如下所述)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何更改列表中的元素并保留原始列表的副本? 的相关文章

  • 嵌套生成器表达式 - 意外结果[重复]

    这个问题在这里已经有答案了 这是测试代码 units 1 2 tens 10 20 nums a b for a in units for b in tens units 3 4 tens 30 40 x for x in nums 假设第
  • Python __init__ * 参数 [重复]

    这个问题在这里已经有答案了 我对 Python 还很陌生 我想使用这个库 但是 该类的构造函数中有一个参数 我找不到任何相关信息 init方法如下所示 def init self ain1 ain2 bin1 bin2 microsteps
  • pandas 读取列中带有额外逗号的 csv

    我正在阅读一个基本的 csv 文件 其中各列用逗号分隔 列名称如下 userid username body 但是 正文列是一个可能包含逗号的字符串 显然这会导致一个问题 pandas 会抛出一个错误 CParserError Error
  • Django表单中的隐藏字段不在cleaned_data中

    我有这个表格 class CollaboratorForm forms Form user forms CharField label Username max length 100 canvas forms IntegerField wi
  • 我如何知道Python的unicode函数识别的所有支持的编码

    Python 有一个unicode将字节流转换为 unicode 字符串的内置函数 我只是希望我能查询所有可用的encoding在我的系统上 但如何 这个问题的原因是 有人使用 MAC OS X 向我发送了一封内容编码为 iso 2022
  • 为什么Flask后台线程获取错误的数据库信息?

    为了将实时数据库信息推送到客户端 我在服务器端使用flask socketio 通过使用websocket将所有实时数据库信息推送到客户端 我的视图文件有一个片段 from models import Host from flask soc
  • 并行执行按位运算的代码

    我有这段代码 通过将该 AU 矩阵的每个字节 8 个元素打包到 A 中来减少内存消耗 从而使 100k 200k 矩阵占用更少的空间 正如您所期望的 这段代码需要永远运行 我也计划将行数增加到 200k 我正在一个非常强大的实例 CPU 和
  • 如果每个元组中的第二项重复,如何从元组列表中删除元素?

    如果每个元组中的第二项重复 如何从元组列表中删除元素 例如 我有一个按第一个元素排序的列表 如下所示 alist 0 7897897 this is a foo bar sentence 0 653234 this is a foo bar
  • 如何在 dash/plotly 中使用 iframe? (Python/HTML)

    我正在创建一个仪表板 我想使用这个交互式地图 网站链接 https www ons gov uk peoplepopulationandcommunity healthandsocialcare causesofdeath articles
  • os.walk 无需深入研究下面的目录

    我该如何限制os walk只返回我提供的目录中的文件 def dir list self dir name whitelist outputList for root dirs files in os walk dir name for f
  • 如何在我的 GUI 上绘图

    我正在设计一个 GUIPyQt当我单击一个按钮来绘制我创建的函数的数据图时 我需要显示一个 matplotlib pylab 窗口 它就像 Matlab 中使用的运行时 每次按下该按钮时 我都想将 matplotlib pylab 窗口保留
  • 使用 SQLAlchemy 查询 Pandas DataFrame 时重命名列

    当您将数据查询到 pandas 数据帧时 有没有办法保留 SqlAlchemy 属性名称 这是我的数据库的简单映射 对于 school 表 我将数据库名称 SchoolDistrict 重命名为较短的 district 我从 DBA 中删除
  • 构建wheel失败/“错误:INCLUDE环境变量为空”

    我正在使用 Python 2 7 11 并尝试 pip install 模块 但是其中一些模块失败了 我收到的消息是 无法为 X 构建轮子 和 错误 包含环境变量为空 我尝试安装 Scrapy LXML 和 Twisted 但都失败了 我尝
  • python请求ssl握手失败

    每次我尝试这样做 requests get https url 我收到这条消息 import requests gt gt gt requests get https reviews gethuman com companies Trace
  • 折叠 numpy 数组除前两个维度之外的所有维度

    我有一个可变维度的 numpy 数组 例如它可以具有以下形状 64 64 64 64 2 5 64 64 40 64 64 10 20 4 我想要做的是 如果维数大于 3 我想将其他所有内容折叠 堆叠到第三维中 同时保留顺序 因此 在我上面
  • numpy.polyval() 的反函数

    我想知道 np polyval 是否有一个方便的反函数 我在其中给出 y 值并求解 x 我知道我可以做到这一点的一种方法是 import numpy as np Set up the question p np array 1 1 10 y
  • 抓取 Shopee API v4

    我有一个最终项目 其中我想要检索的数据是通过在shopee上抓取数据来获取的 但是当我在隐藏的API上抓取shopee时遇到问题 当我在Insomnia脚本上尝试时 脚本会运行 但是当我尝试时在本地或 google colab 脚本上 这是
  • Python for 循环前瞻

    我有一个 python for 循环 其中我需要向前查看一项以查看在处理之前是否需要执行某项操作 for line in file if the start of the next line 0 perform pre processing
  • 如何使用 opencv python 根据检测到的物体的位置生成其热图

    我需要根据对象的位置生成其热图 示例 视频帧中检测到的绿色球 如果它长时间停留在某个位置 那么该位置应该是红色的 并且球在短时间内经过的帧中的位置必须是蓝色的 这样我就需要生成热图 提前致谢 那么你在这里可以做的是 1 首先定义一个热图作为
  • 如何让 Python 生成器返回 None 而不是 StopIteration?

    我使用生成器在列表中执行搜索 如下简单示例 gt gt gt a 1 2 3 4 gt gt gt i for i v in enumerate a if v 4 next 3 只是为了稍微说明一下示例 与上面的列表相比 我使用的列表要长得

随机推荐

  • 如何从图像中识别车辆牌照/车牌(ANPR)? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个网站 允许用户上传汽车图像 我想放置一个隐私过滤器来检测车辆上的车牌并对其进行模糊处理 模糊不是问题 但是是否有库或组件 首选
  • Boost.spirit:解析数字字符和字符串

    我需要解析包含 unsigned int 的行 该字符X是要被丢弃的 和一个字符串 全部由一个或多个空格分隔 例如 1234 X abcd bool a qi phrase parse first last uint ref num 1 g
  • 是否有像数据库的 JDBC 一样的 NoSQL/键值存储抽象库?

    我使用过很多 SQL 抽象库 例如 ODBC JDBC 和 ActiveRecord NoSQL 键值存储世界中有哪些抽象选项 我主要是问这个问题 这样如果我选择键值存储 那么我就可以使用抽象库而不会被锁定 考虑到周围键值存储的数量 我认为
  • 在 VB.Net 中将字节数组转换为整数

    我想知道在 vb net 中将字节数组 长度 4 转换为整数的最佳方法是什么 我知道 BitConverter 但执行函数调用来执行应该可以通过复制 4 字节内存来完成的操作似乎相当浪费 同样 将单 双精度数从二进制表示形式转换为单 双精度
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • npm 命令 create-react-app 失败

    我正在尝试在运行 Os X sierra 10 12 6 的计算机 mac pro 2017 上测试reactjs 我已经遵循了 Facebook 教程 确保您安装了最新版本的 Node js done 按照安装说明进行操作创建一个新项目
  • 在生产环境中使用 Rails 设置 sunspot solr

    我尝试了各种链接 但我似乎找不到关于创建与生产中的 Rails 一起运行的 solr 实例的好资源 我知道您必须为生产设置 solr 服务器 我已经尝试使用 tomcat 设置 solr 但我似乎无法将其链接到 Rails 应用程序 有什么
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • C++ 链式调用中的求值顺序

    假设我们有课A class A public A func1 int return this A func2 int return this 和 2 个独立功能 int func3 int func4 现在在这段代码中 A a a func
  • 正确的 HTTP 重定向状态代码是什么?

    我在我的网站上实现了友好的 URL 我可以通过 URL 以两种方式访问 产品和类别 http www example com home electronics tablets http www example com home electr
  • 将 OoXml 插入单词抛出错误:未知

    我一直在尝试通过office js将OOXML插入到word文档的正文内容中insertOoXML 方法 我什至尝试过最简单的实现 认为我在尝试替换 XML 本身中的 fieldCodes 时做了一些不正确的事情 所有结果都是这样Error
  • Hive:为现有文件夹结构添加分区

    我在 HDFS 中有一个文件夹结构 如下所示 但是 实际上没有使用以下命令在表上创建分区ALTER TABLE ADD PARTITION命令 即使文件夹结构的设置就像表有分区一样 如何自动将所有分区添加到Hive表中 Hive 1 0 外
  • Git - 使用过滤器分支删除带有空变更集的提交

    如何使用 git filter branch 删除没有变更集的提交 我使用以下方法重写了我的 git 历史记录 git filter branch tree filter rm r f my folder f HEAD 效果很好 但现在我有
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • JavaScript onTouch 不工作

    谁能告诉我为什么这个 onTouch 处理程序没有触发 var myDiv document getElementById existingContent var myButton a href log out a myDiv append
  • 数据绑定+动态透视

    我在将数据透视项动态添加到模板化和数据绑定数据透视时遇到问题 使用的类 稍微简化以使其快速理解 class Menu string Name List
  • python XlsxWriter 设置多个单元格周围的边框

    I need an easy way to set border around multiple cells like so 我发现的只是 1 个单元格的边框 并合并单元格 这不是我需要的 我期待类似的事情 worksheet range
  • 主从视图中聚合详细信息值

    我在一些自定义实体中有主从关系 假设我有以下结构 class Master INotifyPropertyChanged public int Id get set property changed implementation publi
  • Recyclerview 动态部分不使用任何第三个库

    我想将标头添加到 recyclerview 我正在尝试使用来实现它 Override public int getItemViewType int position depends on your problem if position 0
  • 如何更改列表中的元素并保留原始列表的副本?

    我四处搜寻并尝试了很多东西 但我无法让它发挥作用 我认为问题与 Python 列出名称的方式有关point到列表中 而不是being实际的列表 但我仍然无法弄清楚 情况是这样的 这是一个字典列表 list original dictiona