#浅copy 数据半共享(复制其数据独立内存存放,但是只拷贝成功第一层) # A = [1,2,3,[11,22,33]] # B = A.copy() # print(B) #[1,2,3,[11,22,33]] # B[3][2]='aaa' # print(A) #[1, 2, 3, [11, 22, 'aaa']] #问题:一个列表中怎么判断第一层,第二层 # print(B) #[1, 2, 3, [11, 22, 'aaa']] # A[0]= 0 # print(A) #[0, 2, 3, [11, 22, 'aaa']] # print(B) #[1, 2, 3, [11, 22, 'aaa']] # print(id(A)==id(B)) #Flase #深copy 深拷贝:数据完全不共享(复制其数据完完全全放独立的一个内存,完全拷贝,数据不共享) # import copy # A= [1, 2, 3, [11, 22, 33]] # # l2 = copy.copy(l1) 浅拷贝 # B = copy.deepcopy(A) # print(A,'>>>',B) # B[3][0] = 1111 # print(A,">>>",B) # =赋值:数据完全共享 # (=赋值是在内存中指向同一个对象,如果是可变(mutable)类型,比如列表,修改其中一个,另一个必定改变 #如果是不可变类型(immutable),比如字符串,修改了其中一个,另一个并不会变 A = [1, 2, 3, ['aa', 'bb']] B = A B[0]='aaa' B[3][0]='bbb' print(A) #['aaa', 2, 3, ['bbb', 'bb']] print(id(A)==id(B)) #True
Python之深浅copy
最新推荐文章于 2024-05-02 21:57:14 发布