首页 > 其他分享 >深浅拷贝

深浅拷贝

时间:2024-03-01 18:34:19浏览次数:13  
标签:10 lst2 lst1 深浅 print 拷贝 copy

当然,我可以帮你将这些Python代码转化为Markdown格式的笔记。以下是你的Markdown笔记:


Python中的深浅拷贝

在Python中,我们可以使用深浅拷贝来复制对象。深拷贝和浅拷贝的主要区别在于,对于复合对象(如列表、字典等),深拷贝会创建一个新的复合对象,并且递归地复制原对象中的所有元素,而浅拷贝只会创建一个新的复合对象,但不会复制元素,而是复制元素的引用。

1. 浅拷贝

浅拷贝只拷贝一级容器中的所有元素独立出一个单独的空间。

import copy

# 方法一
lst1 = [1,2,3]
lst2 = copy.copy(lst1)
lst1.append(10)
print(lst2)  # 输出:[1, 2, 3]
print(lst1)  # 输出:[1, 2, 3, 10]

# 方法二
lst1 = [1,2,3]
lst2 = lst1.copy()
lst1.append(11)
print(lst1)  # 输出:[1, 2, 3, 11]
print(lst2)  # 输出:[1, 2, 3]

2. 深拷贝

深拷贝把所有层级的容器中所有元素都单独拷贝一份,形成独立的空间。

import copy

lst1 = [1,2,3,[4,5,6]]
lst2 = copy.deepcopy(lst1)
lst1[-1].append(999)
print(lst2)  # 输出:[1, 2, 3, [4, 5, 6]]
print(lst1)  # 输出:[1, 2, 3, [4, 5, 6, 999]]

# 其他容器的深拷贝
lst1 = (1,2,3,{"a":1,"b":[10,20]})
lst2 = copy.deepcopy(lst1)
lst1[-1]["b"].append(30)
print(lst1)  # 输出:(1, 2, 3, {'a': 1, 'b': [10, 20, 30]})
print(lst2)  # 输出:(1, 2, 3, {'a': 1, 'b': [10, 20]})

希望这个Markdown笔记对你有所帮助!

标签:10,lst2,lst1,深浅,print,拷贝,copy
From: https://www.cnblogs.com/wbcde116/p/18047704

相关文章

  • 深拷贝与浅拷贝
    深拷贝与浅拷贝深拷贝对象的深拷贝是指其属性与其拷贝的源对象的属性不共享相同的引用点击查看MDN官网解释即深拷贝是值的拷贝,拷贝后的对象与源对象完全独立,互不影响浅拷贝对象的浅拷贝是其属性与其拷贝的源对象的属性共享引用--MDN点击查看MDN官网解释即深拷贝是值......
  • 多线程文件拷贝
    多线程文件拷贝#include<stdio.h>#include<pthread.h>#include<unistd.h>#include<stdlib.h>#include<assert.h>#include<sys/mman.h>#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#inclu......
  • python 的深浅拷贝
    python的深浅拷贝在Python中,深拷贝(deepcopy)和浅拷贝(shallowcopy)是用于复制数据结构(如列表或字典)的两种不同方式,它们有以下区别:浅拷贝(ShallowCopy):浅拷贝创建一个新的对象,然后将原始对象中的元素(如果是可变对象)复制到新对象中。但是,如果元素本身也是一个可变对象,则新对象中的......
  • 多进程拷贝数据文件
    多进程拷贝数据#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>#include<sys/mman.h>#include<sys/wait.h>#include<unistd.h>#include<stdio.h>#include<string.h>intmmap_mamcpy(char**argv){......
  • 零拷贝,mmap 和 sendFile
    传统的IOmmapmmap是一种内存映射技术,mmap相比于传统的IO来说,其实就是少了1次CPU拷贝而已,上图。sendFile在Linux中,提供sendFile函数,实现了零拷贝......
  • java实现scp功能实现目录下所有文件拷贝至指定服务器
    1、添加pom依赖<dependency><groupId>com.jcraft</groupId><artifactId>jsch</artifactId><version>0.1.55</version></dependency>2、示例代码publicstaticvoidmain(String[]args)throwsIOException{try{......
  • C++ 拷贝构造函数简单测试
    浅拷贝静态数组的空间体现深拷贝的效果#include<iostream>#include<string>usingnamespacestd;#defineSEX_SIZE10classStudent{public:Student(stringname){Age=10;Name=newstring(name);strcpy(Sex,"男");......
  • 文件自动拷贝到桌面及设置桌面显示此电脑
    uname="$env:USERPROFILE"$uname=$uname.Substring($uname.length-8)$checkpath=test-path\\xx.xx.xxx.xxx\xx\xx\*.lnkif($checkpath-eq"True"){copy-item\\xx.xx.xxx.xxx\xx\xx\*.*-destination\\xxx\xx$\$uname......
  • 在k8S中,如何实现Pod中容器的文件和宿主机之间相互拷贝?
    在Kubernetes(k8S)中,要实现Pod中容器的文件与宿主机之间的相互拷贝,可以使用kubectlcp命令。以下是具体的命令格式和用法:从Pod中复制文件到本地(宿主机):kubectlcp[NAMESPACE/]POD:CONTAINER_PATHLOCAL_FILEPATH例如,将名为my-pod的Pod中,容器内的/path/to/file-i......
  • STL的深浅拷贝问题
    STL的深浅拷贝问题​ STL容器所提供的都是值(value)寓意,而非引用(reference)寓意,也就是说当我们给容器中插入元素的时候,容器内部实施了拷贝动作,将我们要插入的元素再另行拷贝一份放入到容器中,而不是将原数据元素直接放进容器中,也就是说我们提供的元素必须能够被拷贝。#define_C......