python 赋值、深拷贝浅拷贝及切片使用

news/2024/12/29 10:59:15/文章来源:https://www.cnblogs.com/dyland/p/18638526

赋值、深浅拷贝

先复习一下赋值与深浅拷贝

i = [1,2,1,3,[1,2]]  
j = i  # 赋值  
k = i.copy()  # 浅拷贝  
m = copy.deepcopy(i)  # 深拷贝# 赋值,二者物理地址相同,一方变化另一方同步变化
j.pop(0)  
print(i, j)
[2, 1, 3, [1, 2]] [2, 1, 3, [1, 2]]# 取浅拷贝,二者物理地址不同,但只是父对象不同,其中的子对象是做引用(即子对象相同)
# 如果子对象为可变类型,其变化时,会导致另一方同步变动
k.pop(0)
print(i,k)
[1, 2, 1, 3, [1, 2]] [2, 1, 3, [1, 2]]k[3].pop(0)
print(i,k)
[1, 2, 1, 3, [2]] [ 2, 1, 3, [2]]# 取深拷贝,二者父对象与子对象的物理地址都不同,完全开辟新的内存空间
m[4].pop(0)
print(i,m)
[1, 2, 1, 3, [1, 2]] [1, 2, 1, 3, [2]]

总结

  1. Python中所有变量都是引用(指针)
  2. 不可变数据发生变化时,生成新值,而不是修改原值,相同的值在内存中是唯一
  3. 可变数据变化时,不会重新分配新的容器地址,只改变_容器内的变量_
  4. 三种拷贝方式:对于不可变数据,不管哪种拷贝,都只是快捷方式,id都相同。只有操作可变数据,才能体现出差异性

切片的使用

i = [1,1,2,3]
j = i
j = list(set(i))  # 为j赋予新值
print(i, j)
[1, 1, 2, 3] [1, 2, 3]i = [1,1,2,3]  
j = i  
j[:] = list(set(i))  # 操作j的切片
print(i, j)
[1, 2, 3] [1, 2, 3]

对一个可迭代类型使用[:]时,会生成一个与其完全相同的切片,虽然切片的地址和原对象地址不同,但使用j[:]=...用法时,是修改j的内容,不产生新的对象(切片对象仅做临时使用)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/860759.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024-2025-1 学号20241315《计算机基础与程序设计》第十四周学习总结

作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14这个作业的目标 <写上具体方面>《C语言程序设计》第13-14章并完成云班课测试作业正文 https://www.cn…

2024-2025-1 20241415《计算机基础与程序设计》第十四周学习总结

2024-2025-1 20241415《计算机基础与程序设计》第十四周学习总结 作业信息这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十四周作业这个作业的目标 自学《C语言程序设计》第13-14章作业正文 https://www.cnblog…

kubectl 命令行快速操作-2

9、对外暴露服务 参考:详解kubernetes五种暴露服务的方式 - 滴滴滴 - 博客园 前面只介绍了Nodeport方式,还有NodePort、LoadBalancer、ExternalName、Ingress方式,重点讲解Ingress方式。 nginx-ingress:GitHub - kubernetes/ingress-nginx: Ingress NGINX Controller for K…

主动式AI(代理式)与生成式AI的关键差异与影响

大型语言模型(LLMs)如GPT可以生成文本、回答问题并协助完成许多任务。然而,它们是被动的,这意味着它们仅根据已学到的模式对接收到的输入作出响应。LLMs无法自行决策;除此之外,它们无法规划或适应变化的环境。 主动式AI(代理式)的出现正是为了解决这一问题。与生成式AI…

docker之旅

物理机上部署:1 部署复杂,成本高; 会造成资源的浪费 ; 不支持跨平台部署 ;无法支持进行服务的迁移 虚拟化:1 在一台宿主机上虚拟出多台虚拟机, 虚拟机会部署一个完整的操作系统,要分配系统资源。部署缺点: 部署复杂,无法进行迁移3 虚拟化与容器对比容器直接使用的宿主…

kubernetes之旅

k8s 架构 https://kubernetes.io/核心组件ETCD 分布式高性能键值数据库,存储整个集群的所有元数据 Apiserver 集群的资源访问控制入口,提供restAPI 和安全访问控制 scheduler: 调度器,负责将业务pod调度到合适的节点上 controller manager : 控制器,确保集群 按照期望方式…

asdfasdfasdf

阿斯蒂芬 阿萨德发生的发生阿斯蒂芬 阿萨德发生的发生代发收到飞 阿斯蒂芬 撒旦法撒地方 阿萨德发生的发生 金阿奎猎杀对决菲拉斯代发件 unit main;interfaceusesWinapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,Vcl.Contro…

Blazor 渲染当前语言区小数点格式对应编辑组件

环境: 使用西班牙语文化, 组件: 表格 显示格式对的, 小数点西班牙这边是逗号(,) , 0.99 显示为 0,99 重现 编辑商品, 显示变成了0.99而不是正确的区域格式 0,99, 直接保存没事的 如果手动改了一下数字为 0.99 只要焦点变化了 就会格式化为 99 , 这个时候保存数据就出问题了 经…

两均值比较R

1. 两个均值比较校验 1.1 两独立样本均值检验 1.1.1 检验理论依据 两样本均值差: \(\bar{x}_1-\bar{x}_2\) 两总体均值差: \(\mu_1 - \mu_2\) 则两样本均值差服从正态分布: \[\overline{x}_1-\overline{x}_2\sim N(\mu_1-\mu_2,\sigma_{\overline{x}_1-\overline{x}_2}^2) …

Khronos和EMVA便携式应用程序结构

Kamaros便携式应用程序结构 Kamaros便携式应用程序结构,如图1-11所示。图1-11Kamaros便携式应用程序结构 Khronos和EMVA合作 Khronos和EMVA合作,如图1-12所示。图1-12 Khronos和EMVA合作人工智能芯片与自动驾驶

Intel oneAPI DPC++和UXL基础与对并行处理的需求

Intel oneAPI DPC++和UXL基础 1)Intel oneAPI DPC++符合SYCL 2020规范 ①统一共享内存、并行约简、工作组算法、类模板。 ②论证推理、访问优化、扩展互操作性等。 2)UXL统一加速基础 ①加速计算开放生态系统。 ②工具和库。 ③编译器和开发工具。 ④API和规范。 3)Khronos和…

《智能汽车传感器:原理设计应用》《AI芯片开发核心技术详解》两本专著书推荐

两本书推荐《AI芯片开发核心技术详解》、《智能汽车传感器:原理设计应用》由清华大学出版社资深编辑赵佳霓老师策划编辑的新书《AI芯片开发核心技术详解》已经出版,京东、淘宝天猫、当当等网上,相应陆陆续续可以购买。该书强力解析AI芯片的核心技术开发,内容翔实、知识点新…