python 中的六种“复制”方法

2023-11-04

以列表为例:

方法一:直接变量赋值,将 li 赋值给变量 li1,打印他们的id会发现,他们的id是一样的,即是 li 和 li1 这两个变量在python中是同一个内存地址,对他们任何一个变量进行修改,另外一个会跟着变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:1986306925192

li1 = li 
print(li1)       # 打印结果为:[1, 2, 3, 4]
print(id(li1)   # 打印结果为:1986306925192

# 对 li1 进行修改,li的值也会跟着变化
li1.append(5)
print(li1)      # 打印结果为:[1, 2, 3, 4, 5]
print(li)       # 打印结果为:[1, 2, 3, 4, 5]

方法二:使用切片,通过切片的方法对列表进行“复制”,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:1962829111944

li2 = li[::]
print(li2)        # 打印结果为:[1, 2, 3, 4]
print(id(li2))     # 打印结果为:1962829112008

# 对 li2 进行修改,li的值不会变
li2.remove(2)
print(li2)      # 打印结果为:[1, 2, 3 ]
print(li)      # 打印结果为:[1, 2, 3, 4]

方法三:copy(),使用copy()方法进行“复制”操作,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:2724465959560

li3 = li.copy()
print(li3)       # 打印结果为:[1, 2, 3, 4]
print(id(li3))    # 打印结果为:2724465959624

方法四:list(),使用list()方法进行“复制”操作,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:1896434262664

li4 = list(li)
print(li4)      # 打印结果为:[1, 2, 3, 4]
print(id(li4))  # 打印结果为:1896439307592

方法五:for 循环,使用 for 循环的方法进行“复制”操作,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))    # 打印结果为:2244296860296

li5 = []
for i in li:
    li5.append(i)
print(li5)        # 打印结果为:[1, 2, 3, 4]
print(id(li5))    # 打印结果为:2244296860360

方法六:列表推导式,分别打印他们的 id 会发现,他们的 id 是不同的,也就是它们在python中的内存地址是不一样的,对其中一个变量进行修改,另外的一个变量不会发生变化

li = [1,2,3,4]
print(id(li))      # 打印结果为:1120506569352

li6 = [i for i in li]
print(li6)         # 打印结果为:[1, 2, 3, 4]
print(id(li6))     # 打印结果为:1120506569416
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python 中的六种“复制”方法 的相关文章

随机推荐

  • LeetCode:1625. 执行操作后字典序最小的字符串

    题目链接 1625 执行操作后字典序最小的字符串 力扣 LeetCode 题目信息 给你一个字符串 s 以及两个整数 a 和 b 其中 字符串 s 的长度为偶数 且仅由数字 0 到 9 组成 你可以在 s 上按任意顺序多次执行下面两个操作之
  • 用大数乘法计算阶乘

    在比较小的范围内阶乘可以递归实现 而求更大的数的阶乘一般用到long long长整形数 不过 即使这样 在耗时和再大些的阶乘上力有不逮 所以 在输入比较大的情况下 用大数乘法计算阶乘是最好的选择 计算过程分2步 1 输入字符串s 将它的值保
  • 瑞吉外卖【用户移动端】

    用户移动端 一 手机验证码登录 1 短信发送 1 1 短信服务介绍 1 2 阿里云短信服务 2 手机验证码登录 2 1 需求分析 2 2 数据模型 2 3 代码开发 二 菜品展示 购物车 下单 1 用户地址薄 1 1 需求分析 1 2 数据
  • VLT:Vision-Language Transformer用于引用的视觉语言转换和查询生成分割

    摘要 在这项工作中 我们解决了引用分割的挑战性任务 引用分割中的查询表达式通常通过描述目标对象与其他对象的关系来表示目标对象 因此 为了在图像中的所有实例中找到目标实例 模型必须对整个图像有一个整体的理解 为了实现这一点 我们将引用分割重新
  • kali Linux的优点与缺点

    Kali Linux简介 用于数字取证操作系统 Kali Linux是基于Debian的Linux发行版 设计用于数字取证操作系统 由Offensive Security Ltd维护和资助 最先由Offensive Security的Mat
  • 使用X-WIN32 EXCEED等软件显示远程LINUX桌面的设置

    href http blog bcchinese net shiaohuazhang Services Pingback aspx rel pingback gt 使用X WIN32 EXCEED等软件显示远程LINUX桌面的设置 RED
  • 使用思维导图,优雅的完成自己的代码

    我自己常常在写代码的时候 会突然搞不清变量用来干嘛的 也会被理不清的逻辑搞得自己异常烦躁 我甚至常常暗示自己我不适合写代码 思维总是那么不清晰 直到我发现了思维导图的妙用 最开始使用思维导图的时候 我其实是用来记知识点的 然而某一刻就灵光一
  • Scrum是用来发现问题的

    原文链接作者 Mark Levison 机械的Scrum对比真正的Scrum 差别在哪里 最近 我和一个朋友聊到了他们公司实施Scrum的情况 他们有些迷茫 在实施Scrum之前 他们经常为了访问一台测试机而不得不等上一个小时 甚至更多时间
  • 单例模式 - 饿汉式与懒汉式详解

    什么是单例模式 对于一个软件系统中的某些类而言 只有一个实例很重要 就像Windows中的任务管理器一样 只能打开一个 如果不适用机制对窗口对象进行唯一化 必定会弹出多个窗口 如果这些窗口显示的内容完全一致 则是重复对象 浪费内存资源 如果
  • H2数据库攻略之一-简介

    1 H2数据库介绍 常用的开源数据库 H2 Derby HSQLDB MySQL PostgreSQL 其中H2 HSQLDB类似 十分适合作为嵌入式数据库使用 其它的数据库大部分都需要安装独立的客户端和服务器端 H2的优势 1 h2采用纯
  • jQuery qTip2提示插件 (示例图,API)

    author YHC 首先介绍一下 主要的作用 用作网页中的提示 例如新手入门的导航 看下图你就明白了 当然这个插件在提示上功能非常丰富 下面主要介绍下载地址 以及入门的一个最小的 例子 qTip2官网下载地址 qTip2官网推荐下载地址
  • Android webView去除默认边框

    Android WebView无论怎么修改它的属性都会存在一定的边距 这是因为 HTML 的 body 标签默认存在一定边距 修改 webView 的属性并没有作用 解决办法 修改 html 代码 html data 原本需要加载的html
  • KaTeX

    KaTeX LaTeX数学公式编辑手册 只需要在第三列写法前后分别加上 就可以转换为符号 但需注意 CSDN的使用的是 KaTeX KaTeX KATE X数学公式 而不是 LaTeX LaTeX LATE X 两者会有些许区别 如果有
  • 漂亮的计算器页面 html,html+css实现一个好看的计算器实例代码

    最终效果如下图 2 有bug 就是整数后点击 号结果正确 如果小数后面点击 的话结果就错误 其他都正常 求指点 input的value是string类型的 在JS中改如何正确处理下图 1中的if部分 图 1 图 2 HTML代码如下 简单的
  • 【超全汇总】学习数据结构与算法,计算机基础知识,看这篇就够了

    由于文章有点多 并且发的文章也不是一个系列一个系列发的 不过我的文章大部分都是围绕着 数据结构 算法 计算机网络 操作系统 Linux 数据库 这几个方面发的 为了方便大家阅读 我整理了一波 不过公众号可以说是不支持修改文章 因为我决定每两
  • Java环境从删除到重装

    Java环境从删除到重装 前言 须知 如何完全删除jdk 安装jdk 前言 今天由于一些原因把Java环境删除了 怎么装都装不好 遇到了很多错误 在网上找了好多解决办法之后终于弄好了 所以写成一份Java环境从删除到重装 给各位不小心删除J
  • Centos7下基于jdk11 安装RocketMQ

    1 简介 RocketMQ是阿里巴巴中间件团队自研的一款高性能 高吞吐量 低延迟 高可用 高可靠 具备金融级稳定性 的分布式消息中间件 开源后并于2016年捐赠给Apache社区孵化 目前已经成为了 Apache顶级项目 当前在国内被广泛的
  • 用html+js实现代码背景墙特效【建议收藏】

    在csdn里面 有些博主的主页非常的帅 就是代码从上往下掉的特效 那么这种效果我们作为程序员该如何去写出来呢 不用担心 这篇博客就分享如何创建一个代码背景墙 1 效果展示 2 代码分享
  • java.io.FileNotFoundException: http://www.xxxxx.net:8080/test/test/ 403错误

    POST请求错误内容 java io FileNotFoundException http www xxxxx net 8080 test test at libcore net http HttpURLConnectionImpl get
  • python 中的六种“复制”方法

    以列表为例 方法一 直接变量赋值 将 li 赋值给变量 li1 打印他们的id会发现 他们的id是一样的 即是 li 和 li1 这两个变量在python中是同一个内存地址 对他们任何一个变量进行修改 另外一个会跟着变化 li 1 2 3