python设置颜色深浅_python中关于赋值,深浅拷贝

赋值

相当于同一块内存地址贴上了不同的标签。

比如 a=10,b=a;a和b就是'10'所在内存地址的不同标签而已。

浅拷贝 简单理解就是以下规则

浅拷贝的时候只拷贝第一层元素.

浅拷贝在修改第一层元素(不可变数据类型)的时候,拷贝出来的新列表不进行改变.

浅拷贝在替换第一层元素(可变数据类型)的时候,拷贝出来的新列表不进行改变.

浅拷贝在修改第一层元素中的元素(第二层)的时候,拷贝出来的新列表进行改变.

下面给出一些例子:

lst = [1,2,3,[5,6,7]]

lst1 = lst.copy()

lst1[-1].append(8)

print(lst)

print(lst1)

输出 [1, 2, 3, [5, 6, 7, 8]]

[1, 2, 3, [5, 6, 7, 8]]

lst = [1,2,3,[5,6,7]]

lst1 = lst.copy()

lst[3] = 567

print(lst1)

print(lst)

输出 [1, 2, 3, [5, 6, 7]]

[1, 2, 3, 567]

lst = [1,2,3,4,[5,6,7,[8,9]]]

lst1 = lst.copy() # [1,2,3,4,[5,6,7,[8,9]],10]

lst1.append(10)

print(lst)

print(lst1)

输出 [1, 2, 3, 4, [5, 6, 7, [8, 9]]]

[1, 2, 3, 4, [5, 6, 7, [8, 9]], 10]

lst = [1,2,3,4,[5,6,7,[8,9,]]]

lst1 = lst.copy()

lst[-1][-1] = 56

print(lst)

print(lst1)

输出 [1, 2, 3, 4, [5, 6, 7, 56]]

[1, 2, 3, 4, [5, 6, 7, 56]]

lst = [[1,2,],90,6,7,[5,6]]

lst1 = lst.copy()

lst1[-1] = 8

print(lst)

print(lst1)

输出 [[1, 2], 90, 6, 7, [5, 6]]

[[1, 2], 90, 6, 7, 8]

dic = {"jerry":[1,2,3,[5,6]]}

dic1 = dic.copy()

dic["jerry"][0] = "56"

print(dic)

print(dic1)

输出 {'jerry': ['56', 2, 3, [5, 6]]}

{'jerry': ['56', 2, 3, [5, 6]]}

深拷贝

深拷贝开辟一个容器空间(列表),不可变数据公用,可变数据数据类型(再次开辟一个新的空间)

import copy

lst = [1,2,3,[5,6,7]]

lst1 = copy.deepcopy(lst) # 深拷贝

lst[-1].append(8)

print(lst)

print(lst1)

#输出 [1, 2, 3, [5, 6, 7, 8]]

[1, 2, 3, [5, 6, 7]]

lst = [1,2,3,[5,6,7,[8,10,9]]]

import copy

ls1 = copy.deepcopy(lst)

print(id(lst[-1][-1]))

print(id(lst1[-1][-1]))

#输出 1604930721864

1604932258952

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值