一 定義
在Python中對象的賦值其實就是對象的引用。當創建一個對象,把它賦值給另一個變量的時候,python并沒有拷貝這個對象,只是拷貝了這個對象的引用而已。
淺拷貝:?淺拷貝值只拷貝一層,具有自己單獨的內存地址,二層或其他層不拷貝,指向原有的內存地址。
深拷貝:?就是克隆一份,具有自己單獨的內存地址,兩者完全不相干設。
Python列表淺復制、二 術語
1,變量:是一個系統表的元素,擁有指向對象的連接空間。
2,對象:被分配的一塊內存,存儲其所代表的值。
3,引用:是自動形成的從變量到對象的指針。
4,注意:類型(int類型,long類型(python3已去除long類型,只剩下int類型的數據))屬于對象,不是變量。
python列表去重?5,不可變對象:一旦創建就不可修改的對象,包括字符串、元組、數字。
6,可變對象:可以修改的對象,包括列表、字典。
三 應用范圍
1,切片可以應用于:列表、元組、字符串,但不能應用于字典。
2,深淺拷貝,既可應用序列(列表、元組、字符串),也可應用字典。
python 切片,四 作用
1,減少內存的使用。
2,以后在做數據的清洗、修改或者入庫的時候,對原數據進行復制一份,以防數據修改之后,找不到原數據。
五 應用
list類型
python 淺拷貝、# 淺拷貝
'''
淺拷貝方法:
1、a = b[:]
2、a = b.copy()
python拷貝。3、引用copy模塊,import cope | a = copy.copy(b)
'''
wife = ['diaoqian',1988,['slaras',10000]]
hasband = wife[:]
print(wife,hasband) # ['diaoqian', 1988, ['slaras', 10000]] ['diaoqian', 1988, ['slaras', 10000]]
python 賦值。hasband[0] = 'zhaoyun'
hasband[2][1] = 2000
print(hasband)
# ['zhaoyun', 1988, ['slaras', 2000]]
print(wife)
深淺拷貝,# ['diaoqian', 1988, ['slaras', 2000]]
'''
淺拷貝原則:
1、只復制一層,他變我不變,其余層,他變我也變。
2、如果只有一層,就相當于深復制了
python 數組,'''
# 深拷貝
'''
深拷貝方法:
1、引用copy模塊,import cope | a = copy.deepcopy(b)
qpython、'''
import copy
wife = ['diaoqian',1988,['slaras',10000]]
hasband = copy.deepcopy(wife)
print(wife,hasband)
python123?# ['diaoqian', 1988, ['slaras', 10000]] ['diaoqian', 1988, ['slaras', 10000]]
hasband[0] = 'zhaoyun'
hasband[2][1] = 8000
print(hasband)
# ['zhaoyun', 1988, ['slaras', 8000]]
python中copy的用法?print(wife)
# ['diaoqian', 1988, ['slaras', 10000]]
'''
深拷貝小結:
1、深度拷貝就是克隆一份,具有自己單獨的內存地址,兩者完全不相干設,他變我不變。
'''
dict類型
# 淺拷貝
import copy
wife = {'name':{'diaoq':30},'slaras':10000}
hasband = copy.copy(wife)
print(hasband,wife)
# {'name': {'diaoq': 30}, 'slaras': 10000} {'name': {'diaoq': 30}, 'slaras': 10000}
hasband['name']['diaoq']= 32
hasband['slaras'] = 12000
print(hasband)
# {'slaras': 12000, 'name': {'diaoq': 32}}
print(wife)
# {'slaras': 10000, 'name': {'diaoq': 32}}
# 深拷貝
import copy
wife = {'slaras': 10000, 'name': {'diaoq': 30}}
hasband = copy.deepcopy(wife)
print(hasband,wife)
# {'name': {'diaoq': 30}, 'slaras': 10000} {'name': {'diaoq': 30}, 'slaras': 10000}
hasband['name']['diaoq'] = 32
hasband['slaras'] = 12000
print(hasband)
# {'slaras': 12000, 'name': {'diaoq': 32}}
print(wife)
# {'slaras': 10000, 'name': {'diaoq': 30}}
總結:
不論針對列表還是字典,淺拷貝時,修改的元素類型是可變類型時,他變我也變,修改的類型是不可變類型時,他變我不變。
不論針對列表還是字典,深拷貝時,他變我不變。
可變類型:字典、列表。
不可變類型:整型、字符串、元組。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态