python 深拷贝和浅拷贝并传递引用

2023-12-01

关于python深拷贝和浅拷贝的问题。

该帖子位于深拷贝和浅拷贝有什么区别?

帮不了我。

为什么例如1的和是6而不是10?

e.g.1 :

kvps = { '1' : 1, '2' : 2 }
theCopy = kvps.copy()  # both point to the same mem location ? 
kvps['1'] = 5
sum = kvps['1'] + theCopy['1']
print sum

输出总和为 6

e.g.2 :

aList = [1,2]
bList = [3,4]
kvps = { '1' : aList, '2' : bList }

theCopy = kvps.copy()  # both point to the same mem location ? 
kvps['1'][0] = 5
sum = kvps['1'][0] + theCopy['1'][0]

print sum

输出总和为 10

e.g.3 :

import copy

aList = [1,2]
bList = [3,4]
kvps = { '1' : aList, '2' : bList }

theCopy = copy.deepcopy(kvps)
kvps['1'][0] = 5
sum = kvps['1'][0] + theCopy['1'][0]

print sum

输出总和为6。

另外,例如4

kvps = { '1' : 1, '2' : 2 }    
theCopy = dict(kvps)  #  theCopy hold a reference to kvps ?     
kvps['1'] = 5  # should also change theCopy , right ?    
sum = kvps['1'] + theCopy['1']    
print kvps    
print theCopy    
print sum

它的总和是 6 ,如果 theCopy 是对 kvps 的引用,它应该是 10 。


浅复制在顶级容器中复制可变对象。深层复制会创建数据结构中所有可变容器的新实例。

“e.g. 2”结果为 10,因为您在外部复制了字典,但内部的两个列表仍然是旧列表,并且列表可以就地更改(它们是可变的)。

深度复制运行 aList.copy()、bList.copy() 并用它们的副本替换字典中的值。


例如1 解释:

kvps = {'1': 1, '2': 2}
theCopy = kvps.copy()

# the above is equivalent to:
kvps = {'1': 1, '2': 2}
theCopy = {'1': 1, '2': 2}

当您将其应用于例如2:

kvps = {'1': aList, '2': bList}
theCopy = {'1': aList, '2': bList}

两个字典中的列表对象是相同的对象,因此修改其中一个列表将反映在两个字典中。


进行深层复制(例如 3)会产生以下结果:

kvps = {'1': aList, '2': bList}
theCopy = {'1': [1, 2], '2': [3, 4]}

这意味着两个字典具有完全不同的内容,修改一个字典不会修改另一个。


例如4 通过dict()相当于浅拷贝。

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

python 深拷贝和浅拷贝并传递引用 的相关文章

随机推荐

  • Rails 3 - 登录另一个站点并在会话中保留 cookie

    我正在组装一个小应用程序 它允许用户登录一个没有足够 API 的半流行社交网站 因此我使用 mechanize gem 来自动化我想要添加的一些功能任何人都可以使用 例如群发消息 由于 API 限制 我被迫假装是与站点的 http 接口交互
  • sa 用户被锁定,Windows 身份验证登录失败。怎么办?

    我以管理员身份登录 Windows 7 计算机 我正在尝试连接到同一台计算机上的 SQL Server 2012 SA 帐户已被锁定 当我尝试 Windows 身份验证时 登录失败 我现在如何登录 有没有外部工具可以解锁SA用户 我使用外部
  • 如何将行数据溢出到其他行下方

    在下面的变量中 我想将 900000 划分到其各自的三行下面 其中存在零 对于其他值类似 在新值到达之前动态计数的零的数量 A B是数据和A Bnew是期望的输出 请告诉我如何在 R 中做到这一点 A B A Bnew 0 0 0 0 90
  • 从 PowerShell 格式化 XML

    我有一个 PowerShell 脚本 它运行一个返回 XML 的存储过程 然后 我将 XML 导出到一个文件中 但当我打开该文件时 每行末尾都有 3 个点 并且该行不完整 这是使用out file 当我使用Export Clixml从查询返
  • jQuery 电子邮件地址输入

    我希望我的网站上有一个自动完成 自动格式 收件人 字段 其工作方式类似于 GMail 中的字段 有谁知道 jQuery 有这样的东西吗 纯 JavaScript 或者还有其他替代方案吗 http bassistance de jquery
  • $_POST 在 php 5.3.5 中不起作用

    我正在 PHP 5 3 5 中处理一个页面 看起来 POST不包含从我的表单提交的数据 这是 HTML 文件
  • 如何从命令行执行 Cucumber Spring Boot 打包的 Jar?

    我对 cucumber jvm 世界相当陌生 尝试将 Cucumber Spring Boot 应用程序打包为 Jar 应用程序在 Eclipse 中运行良好 但是当我打包为可执行 jar 时 它失败并出现 Exception 主线程异常
  • WooCommerce 使用辅助 PHP 文件(调用模板)

    我该如何调用辅助 PHP 文件 这是我的代码 add filter woocommerce product tabs woo simfree product tab function woo simfree product tab tabs
  • 使用 xarray 获取 netcdf 文件的平均值

    我使用 xarray 在 python 中打开了一个 netcdf 文件 数据集摘要如下所示 Dimensions latitude 721 longitude 1440 time 41 Coordinates longitude long
  • 自托管 asp.net mvc

    是否可以在另一个应用程序中自行托管 asp net mvc 控制台 Windows 窗体 服务等 我想构建一个应用程序 提供一个 Web 界面来控制它 并且我想使用 asp net mvc 作为它的 Web 部分 我确实快速浏览了一下 Na
  • Keras训练部分模型问题(关于GAN模型)

    我在使用keras实现GAN模型时遇到了一个奇怪的问题 对于GAN 我们需要先建立G和D 然后添加一个新的序列模型 GAN 然后依次添加 G 添加 D 当我这样做时 Keras 似乎反向传播回 G 通过 GAN 模型 D train on
  • PWA 未安装为 WebApk

    我制作了一个 PWA 它通过了所有 LightHouse 因素 即使在访问网站时也会显示 AddToHomeScreen 弹出窗口 但是当您将其添加到主屏幕时 它不会显示在应用程序抽屉中 并且其图标上有一个 chrome 徽章 我不知道该怎
  • 空白第一个 UITableView 节标题

    我的 UITableView 有 2 个部分 我希望我的第一个标题不存在 没有空间 什么都没有 第一个单元格接触屏幕顶部 我想要为我的第二部分添加一个自定义部分标题 如果我不使用我可以这样做 UIView tableView UITable
  • R Hessian 矩阵

    我需要创建函数的 Hessian 矩阵 如下所示 func lt expression sin x y cos x y vars lt c x y 我也需要二阶导数作为表达式 并且需要多次计算它们 所以我制作了一个一阶导数列表和一个二阶导数
  • git 更新后脚本不起作用

    编辑我的后老问题有几次 我提出了一个新问题 因为现在这是一个新问题 In git hooks post update I have echo a gt gt home pi log git update server info git st
  • XML:处理大数据

    您推荐哪种 XML 解析器用于以下目的 XML 文件 已格式化 包含空格 大约 800 MB 它主要包含三种类型的标签 我们称它们为 n w 和 r 它们有一个名为 id 的属性 我必须尽快搜索该属性 删除我不需要的属性可以节省大约 30
  • 如何使用 Firebase 客户端通过多个客户端连接(Node.JS 客户端库)连接到 Nest API?

    我正在构建一个需要处理多个用户的中央模块 让他们订阅其巢上的数据更改 根据我的搜索 Node JS 库不允许我与 Google Nest API 进行多个 Firebase 连接 在不使用 REST 或 REST 流式传输的情况下 是否有任
  • ObjectSet.AddObject() 与 EntityCollection.Add()

    假设我有两个实体集 团队 和 玩家 我正在向系统添加新团队 为了便于讨论 假设我从一个文件 包含重复项 中添加一千个团队 该系统包含 100 个团队来启动 我的目标是避免重复 而不为每个添加的团队调用 SaveChanges 流程是查询新的
  • AJAX跨域调用

    我了解AJAX跨域策略 所以我不能只是打电话 http www google com 通过 ajax HTTP 请求并显示 结果在我的网站上的某个地方 我尝试使用 dataType jsonp 这实际上可以工作 但我收到语法错误 显然是因为
  • python 深拷贝和浅拷贝并传递引用

    关于python深拷贝和浅拷贝的问题 该帖子位于深拷贝和浅拷贝有什么区别 帮不了我 为什么例如1的和是6而不是10 e g 1 kvps 1 1 2 2 theCopy kvps copy both point to the same me