python安装copy_python中copy和deepcopy 的区别
請簡述賦值, 深拷貝和淺拷貝的區別?(python中如何拷貝一個對象?)
直接賦值(li1 = li): 只傳遞對象的引用, li1指向對象li的內存地址空間,
因此, 原有列表li改變, 被賦值的li1也會做相應的改變.
淺拷貝:li和li2的內存地址不同,
但是子對象的內存地址相同, 因此,原始數據改變 , 子對象也改變.\
深拷貝(import copy, eg: li3=copy.deepcopy(li)), li和li3的內存地址不同,
包含子對象的拷貝, 所以原始對象改變并不會造成深拷貝里面任何子項的改變.
當深拷貝和淺拷貝, 針對的對象全部是不可變數據類型時, 兩者效果相同; 當深拷貝和淺拷貝, 針對的對象包含是可變數據類型時, 兩者才有上述區別;
#所有的數值類型和布爾類型, str是不可變數據類型,
#list是可變數據類型;
#淺拷貝的實現:
#- li.copy()
#- li[:]
#- copy.copy(li)
#實現深拷貝:
#- copy.deepcopy(li)
如果copy.copy)拷貝的是元組,那么它不會進行淺拷貝,僅僅是指向
因為元組是不可變數據類型,那么意味著數據一定不能修改,
因此copy.copy()
的時候它會自動判斷是指向
如果,用copy.copy() copy.deepcopy()對一個全部是不可變類型
的數據進行數據拷貝的時候,那么它們的結果相同,都是引用
如果拷貝的是一個擁有可變類型的數據,那么deepcopy依然是深拷貝,
copy是淺拷貝
檔一個變量==xx的時候,約定為:指向地址的過程
淺拷貝:copy.copy()
深拷貝:copy.deepcopy()
總結
以上是生活随笔為你收集整理的python安装copy_python中copy和deepcopy 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IAR软件的安装
- 下一篇: MySQL 之group_concat_