python每日一练之如何copy_python中copy用法

liftword3个月前 (03-01)技术文章28

概述

今天主要来看看Python中的浅拷贝和深拷贝内容,这里用一个实例来说明~


需求:

将一个列表的数据复制到另一个列表中。


思路:

使用列表[:],拿不准可以调用copy模块。


实现方法:

#!/usr/bin/python
#将一个列表的数据复制到另一个列表中


import copy
a=[1,2,3,4,['a','b']]

b=a    				#赋值
c=a[:]              #浅拷贝
d=copy.copy(a)      #浅拷贝
e=copy.deepcopy(a)  #深拷贝

#输出
print('================a改变前================')
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
print('e=',e)

a.append(5)
a[4].append('c')

#输出
print('================a改变后================')
print('a=',a)
print('b=',b)
print('c=',c)
print('d=',d)
print('e=',e)

输出:


python的复制,深拷贝和浅拷贝的区别

一般有三种方法,

alist=[1,2,3,["a","b"]]

1、直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的b也会做相同的改变


2、copy浅拷贝,没有拷贝子对象,所以原始数据改变,子对象会改变

在浅拷贝时,拷贝出来的新对象的地址和原对象是不一样的,但是新对象里面的可变元素(如列表)的地址和原对象里的可变元素的地址是相同的,也就是说浅拷贝它拷贝的是浅层次的数据结构(不可变元素),对象里的可变元素作为深层次的数据结构并没有被拷贝到新地址里面去,而是和原对象里的可变元素指向同一个地址,所以在新对象或原对象里对这个可变元素做修改时,两个对象是同时改变的.

浅拷贝,原对象的list元素改变的话会改变当前对象,如果当前对象中list元素改变了,也同样会影响原对象。


3、深拷贝,包含对象里面的自对象的拷贝,所以原始对象的改变不会造成深拷贝里任何子元素的改变

深拷贝就是完全跟以前就没有任何关系了,原来的对象怎么改都不会影响当前对象



觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~


相关文章

Python 文件复制必备技巧:保留原数据、递归复制目录,效果惊艳

引言:使用 shutil 模块来拷贝文件夹下的所有内容到指定目录。会递归地拷贝整个目录及其所有内容(包括子目录和文件)Python 3.8 或更高版本import shutil import os...

linux下文件和目录的拷贝或移动_linux目录拷贝命令

05.linux下文件和目录的拷贝或移动Treetree命令可以以树状图列出文件目录结构使用 -d 选项只显示目录直接使用tree命令显示当前目录的结构;使用tree [目录名]可以显示指定目录的目录...

Python之掌握文件删除、复制、重命名及内容查找的技巧

亲爱的读者们,今天我们将为大家详细介绍Python中文件操作的四大技巧:文件删除、文件复制、文件重命名以及文件内容查找。掌握这些技巧,将有助于你在编程过程中更加高效地处理文件。一、文件的删除在Pyth...

Python 初学者练习:复制文件_python中的复制

在本教程中,您将学习如何使用 os、shutil 模块中提供的各种函数将文件和文件夹从一个位置复制到另一个位置。在 Python 中使用 copy() 复制文件复制文件可以使用 shutil 模块的...

Python3导入自定义模块的3种方式_python导入自定义的py文件

开始第一种,直接 import这里有个大前提,就是你的py执行文件和模块同属于同个目录(父级目录),如下图:main.py 和 pwcong模块同在python目录执行文件为main.pypwcong...

python应用-shutil详解文件复制/移动/删除功能

shutil 模块是 Python 的标准库模块(直接导入,无需下载),提供了像在电脑上操作文件、文件夹的功能,如复制、移动、删除文件和文件夹等。shutil 模块的__all__包含的函数如下:复制...