物件引用與copy,deepcopy之間的區別
import numpy as np
賦值(物件引用)
a = np.array([1, 2, 3, 4])
a
array([1, 2, 3, 4])
b = a
b
array([1, 2, 3, 4])
a[2] = 0
a
array([1, 2, 0, 4])
b
array([1, 2, 0, 4])
b[1] = 0
a
array([1, 0, 0, 4])
c = b[1:3]
c
array([0, 0])
c[1] = 2
c
array([0, 2])
a
array([1, 0, 2, 4])
b
array([1, 0, 2, 4])
copy(物件拷貝,淺拷貝)
a = np.array([1, 2, 3, 4])
b = a.copy()
b
array([1, 2, 3, 4])
b[0] = 0
b
array([0, 2, 3, 4])
a
array([1, 2, 3, 4])
deepcopy(物件拷貝,深拷貝)
a = [1, 2, 3, 4, ['a', 'b']] #原始物件
d = copy.deepcopy(a) #物件拷貝,深拷貝
d
[1, 2, 3, 4, ['a', 'b']]
複製之間的區別
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始物件
b = a #賦值,傳物件的引用
c = copy.copy(a) #物件拷貝,淺拷貝
d = copy.deepcopy(a) #物件拷貝,深拷貝
a.append(5) #修改物件a
a[4].append('c') #修改物件a中的['a', 'b']陣列物件
print('\t\t:a = ', a)
print('物件引用\t:b = ', b)
print('copy\t\t:c = ', c)
print('deepcopy\t:d = ', d)
:a = [1, 2, 3, 4, ['a', 'b', 'c'], 5] 物件引用 :b = [1, 2, 3, 4, ['a', 'b', 'c'], 5] copy :c = [1, 2, 3, 4, ['a', 'b', 'c']] deepcopy :d = [1, 2, 3, 4, ['a', 'b']]
- 物件引用只是引用了之前物件愛的索引,當原物件與賦值後的物件發生改變時,另一個物件也會發生改變
- copy 只拷貝父物件,不會拷貝物件的內部的子物件。也就是隻拷貝一維中的內容,如果一維中是列表,則是引用列表的物件而不是值
- deepcopy 深拷貝 拷貝物件的值及其子物件的值
相關推薦
物件引用與copy,deepcopy之間的區別
import numpy as np 賦值(物件引用) a = np.array([1, 2, 3, 4]) a array([1, 2, 3, 4]) b = a b array([1, 2, 3, 4]) a[2] = 0 a
java核心技術卷一(三)物件引用與建立,LocalDate的用法
Date now = new Date();當我們使用上面這個語法之時,實際上是實現了兩個過程,第一個是使用new關鍵字建立了一個物件,另外一個過程是將這個建立的物件與變數now關聯到了一起。在java中任何變數的值都是對儲存在另一個地方的一個物件的引用,這一點很關鍵。Sys
Python中的引用,copy和deepcopy的區別
Python中的引用,個人理解,與C中對地址賦值(僅針對於簡單物件,即不可修改的物件,例如int)相似。 簡單的例子: a = [1, 2, 3] b = a b[0] = 4 print(a) --> [4, 2, 3] print(b) --> [4, 2
物件引用與物件的區別
先定義一個簡單的類: public class phone{ int length; int wide; double money; String color; } 如果要建立這個類的一個物件,一般的寫法是 phone p1 = new phon
java--物件引用與物件的區別
一、前言 在java學習中,理解物件以及物件的引用是萬里長征的第一步。但是,現在大量的java學習書籍都將物件以及物件的引用混為一談,然而實際上它們有著本質的區別。為了幫助更多的java學者更好的理解,我將自己的學習理解記錄下來。如有理解不全或者錯誤的地方,歡
由 System.arraycopy 引發的鞏固:物件引用 與 物件 的區別
作者:林冠巨集 / 指尖下的幽靈 掘金:https://juejin.im/user/587f0dfe128fe100570ce2d8 部落格:http://www.cnblogs.com/linguanh/ GitHub : https://github.com/af913337456/
assign,copy,retain之間的區別
copy: 建立一個索引計數為1的物件,然後釋放舊物件 retain:釋放舊的物件,將舊物件的值賦予輸入物件,再提高輸入物件的索引計數為1 Copy其實是建立了一個相同的物件,而retain不是: 比如一個NSString物件,地址為0×1111,內容為@”STR” Cop
Python中copy和deepcopy的區別,以及程式設計實現deepcopy的功能
在python中,有淺複製copy()和深度複製deepcopy(),這兩個的區別我用以下的例子來說明,例如:numlist=[[1,2,[3,4,5]],34,"haha",{"name":{"fistname":"孫","lastName":"悟空"}}]設 numl
iOS 開發 property,strong,weak,retain,assign,copy,nomatic 的區別及使用
並且 指針變量 使用 char 導致 數據 ios5 ret int 1:ARC環境下,strong代替retain.weak代替assign,xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和assign,是不支持ARC的。xcode
Python 中copy和deepcopy的區別
deepcopy 改變 般的 blog 等於 div copy clas 但是 import copy 假設在python中對list的復制 copy稱為淺復制 deepcopy稱為深復制 淺復制和深復制在一般的list中作用是相同的,都是進行一個復制 但是在list嵌套l
value與innerHTML,innerText的區別
value與innerHTML,innerText的區別: innerHTML與innerText的區別我就不講了,主要講value與這兩者的區別! 1.value是表單元素的特有屬性,非表單元素沒有value屬性,如div,span等; 2.value在不同表單元素裡有不同的意義,如b
賦值、copy()以及deepcopy()的區別
針對以下程式碼進行分析舉例 L1 = [1, 2, 3, 4] L = [ L1, 5, 7] L2 = L Import copy L3 = copy.copy(L2) L4 = copy.deepcopy(L2) 1.賦值 L1 = [1, 2, 3, 4] 在計算機記憶體中開
說說HTTPResponse與JsonResponse,Response的區別
1.HTTPResponse是由Django建立的,他的返回格式為HTTPResponse(content=響應體, content_type=響應體資料型別, status=狀態碼),可以修改返回的資料型別,適用於返回圖片,視訊,音訊等二進位制檔案 2.Js
解析Java物件引用與JVM自動記憶體管理
象引用應用程式設計介面是JDKTM1.2中新定義的。該應用程式設計介面允許應用程式以物件引用的方式與JVM的記憶體管理器進行互動。當應用程式需管理大量記憶體物件或者在新的Java物件建立之前需刪除原有物件時,Java物件引用應用程式設計介面具有相當大的用途,例如:
numpy常用概念(copy, deepcopy)
import numpy as np 賦值(物件引用) a = np.array([1, 2, 3, 4]) a array([1, 2, 3, 4]) b = a b array([1, 2, 3, 4]) a[2] = 0 a array([1
JavaScript中innerHTML與innerText,createTextNode的區別
innerHTML和innerText 它們都會把元素內內容替換掉,區別在於: innerHTML 會把替換內容裡的 HTML 標記解釋執行。 innerText 會把替換內容裡的 HTML 標記原樣輸出而不執行。 例如有如下程式碼: var content = "<b>這是對innerHT
Python中的深複製淺複製(等號賦值、copy和deepcopy的區別)
(作者:陳玓玏) 不是那麼有耐心的朋友可以直接看總結! 一、深複製淺複製的區別 以我比較愚笨的理解,淺複製就是,僅複製物件的引用,而不新開闢記憶體,也就是說,會共享指標,當你改變複製後的物件時,其實是在改變原物件記憶體中的內容。 而深複製的意思是,會
C++面試常見題目1_C++與C,Java的區別
new/delete是C++的運算子,malloc/free是C/C++語言的標準庫函式。 new無需顯式地指出所需記憶體的尺寸,編譯器會根據型別資訊自行計算。而malloc則需要顯式地指出所需記憶體的尺寸。 new操作符記憶體分配成功時,返回的是物件型別的指標,型別嚴格與物件匹配,無須進行型別轉換。而m
tomcat 與 nginx,apache的區別?
一般的運用場景下,apache和nginx在負載均衡裡是前端伺服器,用來處理請求的轉發(反向代理等);絕大部分時候他們本身並不會執行專案。tomcat和jetty,WebLogic是後端伺服器,是直接用來執行專案的容器。 簡單來說就是你發出一個請求,先經過apache或nginx,他們會合理地把請求分配到
static方法與非static方法之間區別和呼叫的時機
static方法是屬於類,可以通過類名直接呼叫,非static方法是屬於物件的,如果static方法在沒有建立物件時呼叫非static方法是不成立的,因為非static方法只能通過物件來呼叫。非static方法 所有物件都有自己一套非static方法static方法,是所