关于python的copy()与deepcopy()之间的区别

关于python的copy()与deepcopy()之间的区别

copy为浅复制,不会产生一个独立的对象单独存在,如list中套着list的情况,当改变子list中的一个或多个元素,copy的内容也会一起变,而deepcopy(深复制)则不会改变。

import copy
list1 = [1,2,3]
list2 = [1,2,list1]
list3 = list2.copy()
list4 = copy.deepcopy(list2)
print(list3,list4)
list1[2] = 9
list1[1] = 8
list1[0] = 7 
print(list3,list4)
list1 = [4,5,6] #整个改变不会改变
print(list3,list4)

输出结果如下:

[1, 2, [1, 2, 3]] [1, 2, [1, 2, 3]]
[1, 2, [7, 8, 9]] [1, 2, [1, 2, 3]]
[1, 2, [7, 8, 9]] [1, 2, [1, 2, 3]]

当可变数据类型(list/dict)中包含的子元素为可变数据类型,如[1,2,[3,4,5]],当改变如[3,4,5]这样的子元素列表中的部分元素时,copy()的镜像效果生效,使用deepcopy()不会受到影响。

推荐这些技术文章:

关于函数形参为可变数据类型的一道题

def extendList(val, list = []):
list.append(val)
return list

list1 = extendList(10) #[10,] list
list2 = extendList(123, []) #[123,]
list3 = extendList('a') #[10, 'a'] list

print('list=...

python中的list, dict, tuple以及collections模块的基本用法

1.关于list的一些基本用法

# 创建没有初值的列表
list1=[]

# 创建有初值的列表
list2=['this','is','a','list']

# 创建给定长度但初值不确定的列表
list3=[0 for x in range(4)]

# len()函数用于获取列表的长度
print(len(list1))
print(len(list2))

# 索引用来访问列表
pri...

遍历列表,并删除元素

print("-----------------------")list2 = [1, 2, 3, 4, 5, 6, 55, 33, 66, 87]for index, item in enumerate(list2[:]): print(index,' ',item) list2.remove(item)print(list2)print("--------------------...

python基础:==和is的区别

'==' 比较的是两个对象的值
'is' 比较的是两个对象的内存地址(id)
代码示例
list1 = [5, 2, 0]
list2 = [5, 2, 0]

print(id(list1), type(list1))
print(id(list2), type(list2))

print(list1 == list2)
print(list1 is list2)

控制台输出
189444...

2022.04.10-python学习之深浅拷贝

1 # File : learning_copy_and_deepcopy.py
2 # Datetime : 2022/4/10 0010 2:44
3 # 深浅拷贝
4 import copy
5
6 # 浅拷贝
7 # 文字说明:
8 """
9 在浅拷贝时,拷贝出来的新对象的地址和原对象是不一样的,新对象里面的元素的地址和原对象里面的元素地址是相同的.
10 (可以...

5-python变量类型

变量的类型
可变 于 不可变类型
这里的可变于不可变 针对的是变量的id 和value值 id不变的情况下,在原来id基础上(内存地址)的值是不是可以改 可以改的是可变类型 不可以改的是不可变类型
可变类型:旧瓶装新酒 值改变,id不变,证明改的是原值,证明原值是可以被改变的,
不可变类型:新瓶装新酒,无法用旧瓶装新酒 值改变,id也变了,证明是产生新的值,压根没有改变原值,证明原...

实验3:控制语句与组合数据类型应用编程

import random
print('用列表存储随机整数: ')
ls = [random.randint(1, 100) for i in range(5)
print(ls)
print('\n用集合存储随机整数: ')
s1 = {random.randint(1,100) for i in range(5)}
print(s1)
print('\n用集合存储随机整数: ')
s2 ...

实验3控制语句与组合数据类型应用编程

import random
print('用列表存储随机整数: ')
ls = [random.randint(1, 100) for i in range(5)
print(ls)
print('\n用集合存储随机整数: ')
s1 = {random.randint(1,100) for i in range(5)}
print(s1)
print('\n用集合存储随机整数: ')
s2 ...

python-数据类型-元组和列表

>元组和列表
>>元组
​ 元组是不可修改的列表集合,为了定义数据的统一性,可以定义元组来对数据进行保存。
>>>元组定义

定义:

变量后面接的是 ()

括号内为空时,则是一个空元组

括号内只有一个元素时,则不为元组,由括号内元素类型定义

要想实现括号内只有一个元素的元组,则需要在该元素后面加入逗号","
# 定义一个空元组
info=...

python3_将一个列表赋值给另一个列表

1、列表赋给列表
(1)list2 = list1:将列表直接赋值过去

list2 = []
list2 = []
list1 = ['1', '2', '3']
list2 = list1
print(list1) #['1', '2', '3']
print(list2) #['1', '2', '3']
list1.append('4') #在list1中增加一个值
prin...

文章标题:关于python的copy()与deepcopy()之间的区别
文章链接:https://www.dianjilingqu.com/4064.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>