列表的赋值
一、对象的直接赋值
a = [1, 4, 5]
b = []
b = a
print(a == b)
print(id(a))
print(id(b))
这种赋值是内容和地址的完全相同的,a和b在内容和内存地址上是等价的。修改任意一个列表,a或者b,两者同时改变。
True
1905039397384
1905039397384
二、 浅复制
方法1:切片返回列表的元素
a = [1, 4, 5]
b = []
b = a[:]
print(a == b)
print(id(a))
print(id(b))
这种切片赋值方式是b对a的对象引用,两者的地址不同,单内容相同,改变a或者b不会同时改变。
True
2327904342536
2327934061704
print(a is b)
判断对象是否一致
False
方法2:使用list
a = [1, 4, 5]
b = []
b = list(a)
print(a == b)
print(id(a))
print(id(b))
print(a is b)
True
1908907987464
1908908542472
False
和切片方法效果一致
方法三:copy函数
import copy
a = [1, 4, 5]
b = []
b = copy.copy(a)
print(a == b)
print(id(a))
print(id(b))
print(a is b)