1、直接賦值:預設淺複製傳遞物件的引用而已,原始列表改變,被賦值的b也會做相同的改變。其實就是物件的引用(別名)
2、淺複製(copy):copy方法為淺複製,沒有複製子物件,所以原始資料改變,子物件會改變。
3、深複製(deepcopy):copy 模組的 deepcopy 方法,包含物件裡面的自物件的複製,所以原始物件的改變不會造成深複製裡任何子元素的改變。
例子:
#!/usr/bin/python
# -*-coding:utf-8 -*-
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始物件
b = a #賦值,傳物件的引用
c = copy.copy(a) #物件拷貝,淺拷貝
d = copy.deepcopy(a) #物件拷貝,深拷貝
print( 'a = ', a )
print( 'b = ', b )
print( 'c = ', c )
print( 'd = ', d )
結果:
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]
例子引用: 淺拷貝 深拷貝和淺賦值 深賦值
include includeusing namespace std class string else 淺拷貝 也就是系統預設的拷貝,可寫可不寫。string const string s 預設的拷貝構造 深拷貝 string const string s string s2 s1 深賦值 str...
python3 深複製與淺複製
import json def deepclone dictvalue if isinstance dictvalue,list or isinstance dictvalue,set return deepclone v if type v name in list set tuple dict ...
Python3之淺拷貝和深拷貝
python中賦值語句不複製物件,而是在目標和物件之間建立繫結 bindings 關係。python3中有6種標準的資料型別,可分為可變型別和不可變型別。可變型別 list 列表 dictionary 字典 set 集合 不可變型別 number 數字 string 字串 tuple 元組 淺拷貝由...