Python中列表的深浅拷贝
copy_lst = [
('py对象三要素',),
('== 比较运算符',),
('is 身份运算符',),
('小数据池',),
('列表的浅拷贝',),
('列表的深拷贝',),
]
py对象三要素
id
type
value
== 比较运算符
通过value进行判断
>>>a = 257
>>>b = 257
>>> a == b
True
is 身份运算符
通过id进行判断
>>>a = 257
>>>b = 257
>>>id(a) == id(b)
False
>>>a is b
False
小数据池
代码块的缓存机制
列表的浅拷贝
第一层创建新的内存地址
从第二层开始,指向同一个内存地址
>>>lst = [1, 2, [3, 4]]
>>>copy_lst = lst.copy()
>>>lst is copy_lst
False
>>>lst[0] = 5
>>>lst[0] is copy_lst[0]
False
>>>lst[2][1] = 6
>>>lst[2] is copy_lst[2]
True
列表的深拷贝
完全独立
改变列表任意一个元素(无论多少层),另一个列表都不会改变
>>>from copy import deepcopy
>>>lst = [1, 2, [3, 4]]
>>>deepcopy_lst = deepcopy(lst)
>>>lst is deepcopy_lst
False
>>>lst[0] = 6
>>>lst[0] is deepcopy_lst[0]
False
>>>lst[2][1] = 5
>>>lst[2] is deepcopy_lst[2]
False