首页 > 编程语言 >python 赋值、深拷贝浅拷贝及切片使用

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

时间:2024-12-29 10:56:56浏览次数:6  
标签:python pop 切片 对象 print 拷贝 赋值

赋值、深浅拷贝

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

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的内容,不产生新的对象(切片对象仅做临时使用)

标签:python,pop,切片,对象,print,拷贝,赋值
From: https://www.cnblogs.com/dyland/p/18638526

相关文章

  • Python环境管理的新选择:UV和Pixi,高性能Python环境管理方案
    近期Python生态系统发生了重要变化,特别是在包管理领域。Anaconda对其商业许可证政策进行了调整,要求大型非营利组织(员工超过200人)需要为使用其默认包仓库的每位用户获取商业许可。这一变化促使开发社区开始寻找更开放的解决方案,特别是考虑到Python本身及其大多数包都是开源的这一事......
  • 【故障诊断】【pytorch】基于CNN-LSTM故障分类的轴承故障诊断研究[西储大学数据](Pytho
         ......
  • 请说说你对JS引用赋值,按值赋值的理解
    在JavaScript中,变量的赋值可以大致分为两类:引用赋值和按值赋值。这种分类主要基于JavaScript的数据类型,特别是原始类型(PrimitiveTypes)和对象类型(ObjectTypes)。按值赋值(ValueAssignment)按值赋值通常发生在处理原始类型的数据时,这些原始类型包括:Number、String、Boolean、Nul......
  • 8天学习python笔记
    day01计算机基础和环境搭建1.计算机基础1.1基本概念计算机的组成计算机由多个硬件组合而成,常见的硬件有:cpu,硬盘,内存,网卡,显示器,机箱,电源....注意事项:机械将零件组合在一起,他们之间是无法进行的协作。操作系统windos:生态好,工具多,收费,略慢linux:资源占用少,免费,工具少m......
  • Python 潮流周刊#83:uv 的使用技巧(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。分享了12篇文章,12个开源项目,2则热门讨论,全文2300字。以下是本期摘要:......
  • Python Cookbook(第3版)中文版-PDF免费下载
    PythonCookbook(第3版)中文版-PDF免费下载适读人群:Python程序开发人员、编程爱好者、在校大学生电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:https://item.jd.com/13897579.htmlPython图书升级版本,Python编程从入门到实践,涵盖Python3.3,包含大量实用Pyt......
  • 《100天学习Python:从入门到精通》——第2天:Python数据类型
    大家好啊,今天是我创作的第二天了,今天我就来和大家分享一下关于Python的各种数据类型。首先,今天介绍的代码里的函数和类都可以在builtins.py里面找到,builtins.py是Python的最基础的一些函数以及类定义的一个程序。一.int类大家应该看过这么一段程序吧:a='1'a=int(a)这就是......
  • 探索CSDN博客数据:使用Python爬虫技术
    探索CSDN博客数据:使用Python爬虫技术在数字化的浪潮中,数据的获取与分析变得日益关键。CSDN作为中国领先的IT社区和服务平台,汇聚了海量的技术博客与文章,成为一座蕴藏丰富的数据宝库。本文将引领您穿梭于Python的requests和pyquery库之间,探索如何撷取CSDN博客的点滴信息,并进......
  • 自动化微信朋友圈:Python脚本实现自动发布动态
    自动化微信朋友圈:Python脚本实现自动发布动态引言在数字化时代,社交媒体已成为人们日常生活中不可或缺的一部分。微信作为中国最受欢迎的社交平台之一,其朋友圈功能更是用户分享生活点滴的重要场所。然而,手动输入长文本内容到朋友圈可能会显得繁琐且耗时。本文将介绍如何使......
  • 【java毕设 python毕设 大数据毕设】基于springboot的阳光幼儿管理系统的设计与实现
    ✍✍计算机编程指导师⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java实战|SpringBoot/SSMPython实战项目|Django微信小程......