Python - 不使用复制模块的深度复制

2024-05-15

本质上,问题是创建一个函数 deepcopy(L) ,它将返回列表 L 的深层副本。但是,我们被告知不要使用 copy 模块或其中的任何函数。

我是入门课程的初学者,老实说我在这方面很挣扎。我们真正被告知的唯一一件事是我们应该使用递归来解决问题,但在被困了这么长时间之后,我想我应该寻求帮助。

在课堂上无法弄清楚,也没有真正得到明确的答案,现在教授正在继续前进,所以任何帮助将不胜感激。谢谢。


也许,您正在寻找这样的东西:

def mydeepcopy(L):
    if isinstance(L, list):
        ret = []
        for i in L:
            ret.append(mydeepcopy(i))
    elif isinstance(L, (int, float, type(None), str, bool)):
        ret = L
    else:
        raise ValueError("Unexpected type for mydeepcopy function")

    return ret

lst = [ [1,2,3], [4,5,6], [7,8,9] ]
copy = mydeepcopy(lst)

print("Original Data: %s" % (lst))
print("Original IDs: %s = %s" % (id(lst),[ id(i) for i in lst ]))

print("Copied Data: %s" % (copy))
print("Copied IDs: %s = %s" % (id(copy),[ id(i) for i in copy ]))

可能的输出:

Original Data: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Original IDs: 140637274065288 = [140637274064712, 140637274064776, 140637274065352]
Copied Data: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Copied IDs: 140637274065480 = [140637274065416, 140637274065160, 140637274065096]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python - 不使用复制模块的深度复制 的相关文章

  • 出现异常时进行截图

    嘿 有没有一种方法可以在异常 任何异常 时捕获屏幕截图 我的 失败 解决方案位于BaseTestCase unittest TestCase子类 class BaseTestCase unittest TestCase classmetho
  • 如何将 Jupyter Notebook 的代码片段与 VSCode 结合使用?

    我已经使用 VSCode 一段时间了 目前我正在尝试设置代码片段来工作 它们似乎适用于简单的 Python py 文件 但不适用于 Jupyter Notebook ipynb 文件 有什么办法可以让他们一起工作吗 片段就在这里 Creat
  • 代码运行时出现内存问题(Python、Networkx)

    我编写了一个代码来生成具有 379613734 条边的图 但由于内存问题 代码无法完成 当经过 6200 万行时 大约会占用服务器内存的 97 所以我杀了它 您有解决这个问题的想法吗 我的代码是这样的 import os sys impor
  • 我应该将Python的pyc文件添加到.dockerignore吗?

    我见过几个例子 dockerignorePython 项目的文件 其中 pyc文件和 或 pycache 文件夹被忽略 pycache pyc 由于无论如何这些文件 文件夹都会在容器中重新创建 我想知道这样做是否是一个好习惯 是的 这是一个
  • 会话cookie太大烧瓶应用程序[重复]

    这个问题在这里已经有答案了 我正在尝试使用会话 本地 加载某些数据 并且它已经工作了一段时间 但是现在我收到以下警告 并且不再加载通过会话加载的数据 b session cookie 太大 该值是 13083 字节 但是 标头需要 44 个
  • Visual Studio Code 调试控制台中的 pydevd 警告

    我已经搜索了一段时间但找不到任何相关问题 当使用 Visual Studio Code 和 Python 扩展来调试大型元素时 计算表示或获取属性可能需要一些时间 在这些情况下 会出现如下警告 pydevd 警告 计算 DataFrame
  • Pandas系列矢量化文本处理

    我想使用矢量化操作改进我的 Pandas 代码 假设我有一个简单的 DataFrame 其中有一个文本列 其中可能包含 url Column1 0 hello http www google com 1 bye www mail com w
  • 在 Flask 中将配置文件作为字典读取

    在 instance app cfg 我已经配置 test test 在我的烧瓶文件 app py 中 with app open instance resource app cfg as f config f read print con
  • 使用 ruamel.yaml,如何使带有 NEWLINE 的变量成为不带引号的多行

    我正在生成用作协议的 YAML 其中包含一些生成的 JSON import json from ruamel import yaml jsonsample id 123 type customer account other myyamel
  • 如何在 matplotlib 图中禁用 xkcd?

    您可以通过以下方式打开 xkcd 风格 import matplotlib pyplot as plt plt xkcd 但如何禁用它呢 I try self fig clf 但这行不通 简而言之 要么使用 Valentin 提到的上下文管
  • XGBOOST 功能名称错误 - Python

    也许这个问题已经以不同的形式被问过很多次了 但是 我的问题是当我使用XGBClassifier 对于像数据这样的产品 我收到功能名称不匹配错误 我希望有人能告诉我我做错了什么 这是我的代码 顺便说一句 数据完全是编造的 import pan
  • 使用字符串迭代 url - python

    我现在完全被我的代码困住了 首先 我尝试从 volkskrant 的存档页面检索所有网址 这是我被打击的第一步 某一特定日期的 url 如下所示 http www volkskrant nl archief detail 01012016
  • 如何在 Python 中从 C++/C# 紧密实现 ?: ?

    在 C 中 我可以轻松编写以下内容 string stringValue string IsNullOrEmpty otherString defaultString otherString 有没有一种快速的方法可以在 Python 中做同
  • While 在范围内循环用户输入

    我有一些代码 我想要求用户输入 1 100 之间的数字 如果他们在这些数字之间输入一个数字 它将打印 Size input 并打破循环 但是 如果他们在外部输入一个数字1 100 它将打印 大小 输入 并继续向他们重新询问一个数字 但我遇到
  • 调度算法,找到设定长度的所有非重叠区间

    我需要为我的管理应用程序实现一种算法 该算法将告诉我何时可以将任务分配给哪个用户 我实现了一个蛮力解决方案 它似乎有效 但我想知道是否有更有效的方法来做到这一点 为了简单起见 我重写了算法以对数字列表进行操作 而不是数据库查询等 下面我将尝
  • 从 SQL 数据库导入表并按日期过滤行时,将 Pandas 列解析为日期时间

    我有一个DataFrame列名为date 我们如何将 日期 列转换 解析为DateTime object 我使用 Postgresql 数据库加载日期列sql read frame 的一个例子date列是2013 04 04 我想做的是选择
  • python 3 configparser.read() 在给定不存在的文件时不会引发异常

    当我尝试使用 configparser read 读取不存在的文件时 我认为它应该引发异常 事实并非如此 它返回一个空列表 显然 我可以测试空列表并引发异常 在我看来 如果 configparser read 引发 FileNotFound
  • 如何导入 boto3 ssm ParameterNotFound 异常?

    我想import the exception当一个boto3 ssm找不到参数get parameter 我正在尝试添加一些额外的内容ssm的功能moto图书馆 但我现在很困惑 gt gt gt import boto3 gt gt gt
  • Django model.foreignKey 并返回 self.text 错误

    所以我正在 Django 中处理 model py 但遇到了 2 个 pylint 错误 我不明白为什么 这是 pylint 的问题还是我在代码中做错了什么 E1120 No value for argument on delete in
  • 捕获 subprocess.run() 的输入

    我在 Windows 上有一个交互式命令行 exe 文件 是由其他人编写的 当程序出现异常时 它会终止 并且我对程序的所有输入都会丢失 所以我正在编写一个 python 程序 它调用一个阻塞子进程subprocess run 并捕获所有输入

随机推荐

  • 关于JSON和序列化的问题

    我的视图模型有一个强类型视图 其中包含一个对象 Person 和一个技能列表 人是很直率的 我像这样使用 Html Helpers Html TextBoxFor m gt m Person FirstName 我提交表格并得到我想要的 问
  • 自定义Visual Studio的项目上下文菜单

    我正在使用带有一些加载项和扩展的 Visual Studio 2010 现在的问题是 解决方案资源管理器中项目项的上下文菜单变得如此之大 以至于我总是必须向下滚动才能找到我最常使用的 属性 和 在 Windows 资源管理器中打开 这变得非
  • 如何在 python 中将最佳概率分布模型拟合到我的数据?

    我有大约 20 000 行这样的数据 Id value 1 30 2 3 3 22 n 27 我对我的数据进行了统计 平均值33 85 中位数30 99 最小值2 8 最大值206 95 置信区间0 21 所以大多数值在33左右 并且有一些
  • 分而治之策略来确定列表中是否有超过 1/3 的相同元素

    我正在使用分治算法来确定列表中是否有超过 1 3 的元素相同 例如 1 2 3 4 不 所有元素都是唯一的 1 1 2 4 5 是的 其中 2 个是相同的 没有排序 是否有分而治之的策略 我陷入了如何划分的困境 def is valid i
  • 使用 php ping 网站

    我想创建一个 php 脚本 它将 ping 一个域并列出响应时间以及请求的总大小 这将用于监控网站网络 我尝试过curl 这是我到目前为止的代码 function curlTest2 url clearstatcache return if
  • 找不到将 SAML 应用发布到 G Suite 的位置

    我们已经在 G Suite Marketplace 上发布了一个应用程序 但我们现在希望发布一个应用程序 以便公众在转到 G Suite gt 应用程序 gt SAML 应用程序时可以使用该应用程序 然后将其列出 具体来说 我们希望将我们的
  • 在 OSX 和 GNU 中使用“find”删除带有数字的文件名

    我正在尝试搜索一个文件并删除名称中包含数字的类似文件 我的文件 txt from myfile 00 04 version txt myfile 00 txt find E iregex myfile 0 9 1 txt 删除 myfile
  • java.lang.ClassNotFoundException:由 AdMob / Google Play 服务引起的 android.os.AsyncTask?

    自 2014 年 11 月 21 日以来 我收到了数百份崩溃报告 堆栈如下 崩溃仅发生在 API 级别 10 设备上 该应用支持 9 在崩溃开始之前的几周内 该应用程序的同一版本一直运行良好 这让我认为这个问题是由最近推送到 Android
  • Azure 和直播

    我正在尝试使用 Azure 制作实时视频流 但我真的不知道应该先尝试什么 首先 有一个网站 上面有最新版本的 Flowplayer 现在我需要知道如何将网络摄像头的视频流传输到 Azure 我需要什么样的软件 我正在尝试使用 Express
  • 没有关于 bool 到浮点类型的隐式转换的警告?

    看起来这个片段在 clang 中编译时没有警告 即使使用 Weverything 也是如此 double x if fabs x gt 1 0 我错过了什么吗 或者编译器和 C 标准是否认为强制转换bool to double有道理吗 这是
  • 工厂模式和策略模式

    我需要创建一个类来负责结果集处理 但可能会发生应该使用不同的算法来处理该结果集的情况 我知道以下选项 1 使用策略模式 伪代码如下 interface Strategy processResultSet ResultSet rs class
  • 无需 Spring MVC 的定制 Spring Security

    我正在使用我自己的 MVC 实现 我不确定 Spring Security 是否不是专门为 Spring MVC 实现设计的 还可以用吗 我不清楚我应该使用 Spring Security 的哪些部分以及不需要哪些部分 我想我不需要 URL
  • C# 无法访问已释放的对象

    我正在制作一个服务器 客户端应用程序 我将服务器套接字设置为侦听 并设置 BeginAccept 方法 当我关闭服务器套接字 Socket Close 以关闭服务器时 BeginAccept 方法的异步回调方法抛出异常 我检查了异常 发现异
  • 通过反射使用私有字段对引用结构进行单元测试

    我实现了一对 ref 结构 并想为它们编写一些单元测试 当然 所有领域都是私有的 假设 API 不应该揭示类的内部工作原理 那么在某些操作之后 如何测试字段是否具有正确的值 我想避免仅仅为了适应测试而修改引用结构本身 我的第一个选择是反射
  • 具有动态变量数的公式

    假设有一些 data framefoo data frame想要找到目标列的回归Y由其他一些专栏 为此目的 通常使用一些公式和模型 例如 linear model lt lm Y FACTOR NAME 1 FACTOR NAME 2 fo
  • 为什么要加密 ASP.NET 中的查询字符串?

    我正在开发一个用 C ASP NET 编写的 Web 应用程序 该应用程序的原始设计者选择使用加密的查询字符串和Viewstate控制应用程序的 安全 和 状态 在此之前 我来自 GET POST 世界 我没有很好的基础来理解为什么人们会经
  • Flutter Websockets MacOS:相同的代码可以在调试模式下工作,但不能在发布模式下工作:“(操作系统错误:提供了节点名或服务名..)”

    Summary 我有一个在 Flutter 中使用 WebSockets 的程序 该程序在debug模式 但运行相同exact代码在release模式会导致错误 Context Flutter 文档告诉我们如何使用 WebSocket ht
  • 由于 CORS 错误,POST 请求在 React axios 中被阻止[重复]

    这个问题在这里已经有答案了 我正在尝试向包含多部分数据的 API 发送 POST 请求 我在 postman 中测试了 API 一切正常 但是当我在react中调用API时 它给了我CORS错误 我交叉检查了 URL 标头和数据 对我来说一
  • URL路径相似度/字符串相似度算法

    我的问题是我需要比较 URL 路径并推断它们是否相似 下面我提供了要处理的示例数据 GROUP 1 robots txt GROUP 2 bot html GROUP 3 phpMyAdmin 2 5 6 rc1 scripts setup
  • Python - 不使用复制模块的深度复制

    本质上 问题是创建一个函数 deepcopy L 它将返回列表 L 的深层副本 但是 我们被告知不要使用 copy 模块或其中的任何函数 我是入门课程的初学者 老实说我在这方面很挣扎 我们真正被告知的唯一一件事是我们应该使用递归来解决问题