python中将一个列表赋值给另一个列表的问题

我需要将a列表的值赋给b列表的值,开始是这么写的:

a=[1,2,3,4]
b=a
b.remove(2)
print(a)
print(b)

但是我移除b中的某个元素时,a中的元素也被移除了,输出结果为:

[1, 3, 4]
[1, 3, 4]

然后打印两个列表的地址:

print(a is b) #True
print(id(a)) #2198485055240
print(id(b)) #2198485055240

输出是同一对象,地址也是一样的。
原因涉及到深拷贝与浅拷贝。
解决方法可以用到切片:

a=[1,2,3,4]
b=a[:]
b.remove(2)
print(a is b) #False
print(id(a)) #2718473631496
print(id(b)) #2718473595656

版权声明:本文为weixin_42142509原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。