列表复制的四种方法
a=b
Python列表用等号赋值并不是将列表完整的赋值给另一个列表,而是通过引用另一个列表的地址
a=[1,2,3,4]
b=[0,9,8,6]
a=b
b.append([5,4])
print(a) #[0, 9, 8, 6, [5, 4]]
故而,当你改变列表b时,列表a也会相应的改变
我们可以查看此时a和b的id(查看某个对象的内存地址)来验证一下
print(id(a)) #2855987703296
print(id(b)) #2855987703296
a=list(b)
a=[1,2,3,4]
b=[0,9,8,6]
a=list(b)
b.append([5,4])
print(a) # [0, 9, 8, 6]
它们指向不同的内存地址空间,下面我们来验证一下
print(id(a)) #2037959826880
print(id(b)) #2037959770048
a=b[:]
a=[1,2,3,4]
b=[0,9,8,6]
# a=b
# a=list(b)
a=b[:]
b.append([5,4])
print(a) #[0, 9, 8, 6]
它们指向不同的内存地址空间,下面我们来验证一下
print(id(a)) #2201300509696
print(id(b)) #2201300451264
a=b.copy()
a=[1,2,3,4]
b=[0,9,8,6]
a=b.copy()
b.append([5,4])
print(a) #[0, 9, 8, 6]
这种方法列表a和列表b指向不同的地址
print(id(a)) #2849011278848
print(id(b)) #2849011220416