关于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("--------------------...
'==' 比较的是两个对象的值
'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...
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 (可以...
变量的类型
可变 于 不可变类型
这里的可变于不可变 针对的是变量的id 和value值 id不变的情况下,在原来id基础上(内存地址)的值是不是可以改 可以改的是可变类型 不可以改的是不可变类型
可变类型:旧瓶装新酒 值改变,id不变,证明改的是原值,证明原值是可以被改变的,
不可变类型:新瓶装新酒,无法用旧瓶装新酒 值改变,id也变了,证明是产生新的值,压根没有改变原值,证明原...
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 ...
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 ...
>元组和列表
>>元组
元组是不可修改的列表集合,为了定义数据的统一性,可以定义元组来对数据进行保存。
>>>元组定义
定义:
变量后面接的是 ()
括号内为空时,则是一个空元组
括号内只有一个元素时,则不为元组,由括号内元素类型定义
要想实现括号内只有一个元素的元组,则需要在该元素后面加入逗号","
# 定义一个空元组
info=...
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...
文章链接:https://www.dianjilingqu.com/4064.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。