1 python語言哲學:賦值語句,都是引用。
# 將a賦值給b,改變a的第一個元素,b的第一個元素隨之改變
a = [1, 2, 3]
b = a
print(b) #[1, 2, 3]
a[0] = 0
print(a) #[0, 2, 3]
b #[0, 2, 3]
2 想a和b互不干擾怎麼辦?拷貝啊!
# 2.1 淺拷貝 切片 [::] [開始:結束:步進]
a = [1, 2, 3]
b = a[::] # 這裏就是複製了一份a
print(b) #[1, 2, 3]
a[0] = 0
print(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] = 1
a #[1, [1, 2], 3]
b #[0, [1, 2], 3]
a[1][0] = 0
a #[1, [0, 2], 3]
b #[0, [0, 2], 3]
# 2.2 深拷貝
import copy
b = copy.deepcopy(a)
b = copy.copy(a) #此爲淺拷貝