1 python语言哲学:赋值语句,都是引用。
# 将a赋值给b,改变a的第一个元素,b的第一个元素随之改变a = [1, 2, 3]b = aprint(b) #[1, 2, 3]a[0] = 0print(a) #[0, 2, 3]b #[0, 2, 3]
2 想a和b互不干扰怎么办?拷贝啊!
# 2.1 浅拷贝 切片 [::] [开始:结束:步进]
a = [1, 2, 3]b = a[::] # 这里就是复制了一份aprint(b) #[1, 2, 3]a[0] = 0print(a) [0, 2, 3]print(b) [1, 2, 3]# 问题:b = a[::]只是表层拷贝,里面的列表只是复制了一个引用出来,这两个引用指向的地址是一样的,改了其中一个,当然另一个也跟着变了a = [0, [1, 2], 3]b = a[::]a #[0, [1, 2], 3]b #[0, [1, 2], 3]a[0] = 1a #[1, [1, 2], 3]b #[0, [1, 2], 3]a[1][0] = 0a #[1, [0, 2], 3]b #[0, [0, 2], 3]
# 2.2 深拷贝
import copyb = copy.deepcopy(a)b = copy.copy(a) #此为浅拷贝