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

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) #此爲淺拷貝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章