python:複製與引用、淺拷貝與深拷貝

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 淺拷貝 切片 [::] [開始:結束:步進]python

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 深拷貝code

import copy
b = copy.deepcopy(a)
b = copy.copy(a) #此爲淺拷貝
相關文章
相關標籤/搜索