"""
结论:
1、列表的浅复制:
方法:lst.copy()
结果:不可变类型末端元素不同步变动,可变类型末端元素同步变动
独立性:复制前后的列表半独立,可变类型的末端元素同步变动。
2、列表的深复制:
方法: import copy -> copy.deepcopy(lst)
结果:所有末端元素都不同步变动
独立性:复制前后的列表完全独立,没有同步变动的元素。
其他:
print的末尾默认添加字符为\n(换行),可以指定其他字符,适应不同场景应用。如,print(1, end=''),不换行
"""
################################ 列表的浅复制:不可变类型末端元素不同步变动,可变类型末端元素同步变动,列表半独立
lst1 = ['abc', 123, [1, 2]]
# 浅复制
lst2 = lst1.copy()
print(lst1, lst2) # ['abc', 123, [1, 2]] ['abc', 123, [1, 2]]
# 列表的id不同
print(id(lst1), id(lst2)) # 2261384977280 2261385351296
# 列表可变类型的末端元素的id相同
print(id(lst1[2][0]), id(lst1[2][1])) # 2261379606832 2261379606864
print(id(lst2[2][0]), id(lst2[2][1])) # 2261379606832 2261379606864
# 修改不可变类型和可变类型元素
lst2[0] = 'def' # 修改不可变类型元素
lst2[2][0] = '1111' # 修改可变类型元素
# 不可变类型元素不同步变动,可变类型元素同步变动
print(lst1, lst2) # ['abc', 123, ['1111', 2]] ['def', 123, ['1111', 2]]
print(id(lst1), id(lst2)) # 2261384977280 2261385351296
# 可变类型末端元素同步变动
print(id(lst1[2][0])) # 2261384977904
print(id(lst2[2][0])) # 2261384977904
################################
import copy
lst1 = ['abc', 123, [1, 2]]
# 浅复制
lst2 = copy.deepcopy(lst1)
print(lst1, lst2) # ['abc', 123, [1, 2]] ['abc', 123, [1, 2]]
# 列表的id不同
print(id(lst1), id(lst2)) # 1994268086720 1994265156416
# 列表可变类型的末端元素的id相同
print(id(lst1[2][0]), id(lst1[2][1])) # 1994259786032 1994259786064
print(id(lst2[2][0]), id(lst2[2][1])) # 1994259786032 1994259786064
# 修改不可变类型和可变类型元素
lst2[0] = 'def' # 修改不可变类型元素
lst2[2][0] = '1111' # 修改可变类型元素
# 所有末端元素都不同步变动
print(lst1, lst2) # ['abc', 123, [1, 2]] ['def', 123, ['1111', 2]]
print(id(lst1), id(lst2)) # 1994268086720 1994265156416
# 可变类型末端元素同步变动
print(id(lst1[2][0])) # 1994259786032
print(id(lst2[2][0])) # 1994268051056
【Python基础】 - 列表的深浅复制
最新推荐文章于 2023-08-02 14:29:43 发布