[Python] 直接賦值、淺拷貝和深度拷貝解析
直接賦值:其實就是物件的引用(別名)。
淺拷貝(copy):拷貝父物件,不會拷貝物件的內部的子物件。
深拷貝(deepcopy): copy 模組的 deepcopy 方法,完全拷貝了父物件及其子物件。
字典淺拷貝例項
例項
>>>a = {1: [1,2,3]}
>>> b = a.copy()
>>> a, b
({1: [1, 2, 3]}, {1: [1, 2, 3]})
>>> a[1].append(4)
>>> a, b
({1: [1, 2, 3, 4]}, {1: [1, 2 , 3, 4]})
深度拷貝需要引入 copy 模組:
例項
>>>import copy
>>> c = copy.deepcopy(a)
>>> a, c
({1: [1, 2, 3, 4]}, {1: [1, 2, 3, 4]})
>>> a[1].append(5)
>>> a, c
({1: [1, 2, 3, 4, 5]}, {1: [1, 2, 3, 4]})
解析
1、b = a: 賦值引用,a 和 b 都指向同一個物件。
2、b = a.copy(): 淺拷貝, a 和 b 是一個獨立的物件,但他們的子物件還是指向統一物件(是引用)。
3、b = copy.deepcopy(a): 深度拷貝, a 和 b 完全拷貝了父物件及其子物件,兩者是完全獨立的。
更多例項
以下例項是使用 copy 模組的 copy.copy( 淺拷貝 )和(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 ) #物件拷貝,深拷貝
a.append(5) #修改物件a
a[4].append('c') #修改物件a中的['a', 'b']陣列物件
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']])
相關推薦
Python 直接賦值、淺拷貝和深度拷貝解析
log epc uno amp 技術分享 example 內部 clas color 直接賦值:其實就是對象的引用(別名)。 淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。 深拷貝(deepcopy): copy 模塊的 deepcopy
Python 直接賦值、淺拷貝和深度拷貝全解析
ima img 引入 對象的引用 print function 引用 輸出結果 ons 直接賦值:其實就是對象的引用(別名)。 淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。 深拷貝(deepcopy): copy 模塊的 deepcopy 方法
Python直接賦值、淺拷貝和深度拷貝解析
rabl iterable bject nes 返回值 元祖 列表 深度 拷貝 ython 文件 writelines() 方法用於向文件中寫入一序列的字符串。 這一序列字符串可以是由叠代對象產生的,如一個字符串列表。 換行需要制定換行符 \n。 語法 writelines
[Python] 直接賦值、淺拷貝和深度拷貝解析
直接賦值:其實就是物件的引用(別名)。 淺拷貝(copy):拷貝父物件,不會拷貝物件的內部的子物件。 深拷貝(deepcopy): copy 模組的 deepcopy 方法,完全拷貝了父物件及其子物件。 字典淺拷貝例項 例項 >>&
python直接賦值、深拷貝和淺拷貝
python中,物件賦值實際上是物件的引用。當建立一個物件,將其賦值給另一個變數,python並沒有拷貝這個物件,而是拷貝了這個物件的引用。 所以如果從單純的賦值語句來實現clone物件的話, 那可能bug出現的也會莫名其妙. Python中可以使用copy模組來複制物件.
學習python--第八天(直接賦值、淺拷貝和深度拷貝解析)
bsp 克隆 copy deepcopy 直接 python str nbsp pytho 直接賦值:其實就是對象的引用(別名)。 淺拷貝(copy):拷貝父對象,不會拷貝對象的內部的子對象。--只拷貝第一層 深拷貝(deepcopy): copy 模塊的 de
python 字典賦值、淺拷貝、深拷貝
# 專案開發中,因字典可修改,所以注意拷貝方式 import copy 1. 原字典操作 dict1 = {'user': 'test', 'num': [1, 2, 3]} &
Python中賦值、淺拷貝與深拷貝的區別
賦值,其實就是物件的引用,對新物件的如何修改都會影響到原始物件。 Python中有兩種拷貝操作:淺拷貝和深拷貝。 copy.copy(x):返回x的淺拷貝。 copy.deepcopy(x):返回x的深拷貝。 那麼都是拷貝,淺拷貝和深拷貝有什麼不同嗎? 淺
python學習(六):python中賦值、淺拷貝、深拷貝的區別
存在賦值、淺拷貝、深拷貝問題的資料型別是對組合物件來說,所謂的組合物件就是包含了其它物件的物件,如列表,類例項。 其他的單個物件則不存在這個問題。 可變物件: list, dict. 不可變物件有: int, string, float, tuple.  
Python中賦值、淺拷貝、深拷貝的區別?
1.賦值(=),就是建立了物件的一個新的引用,修改其中任意一個變數都會影響到另一個。 2.淺拷貝:建立一個新的物件,但它包含的是對原始物件中包含項的引用(如果引用的方式修改其中的一個物件,另外一個也會修改改變) {1.完全切片方法;2.工廠函式,如list();3.copy模組的cop
Python:賦值、淺拷貝、深拷貝
賦值:a=b,只拷貝了物件的引用,沒有拷貝內容。兩個物件的id一樣 淺拷貝:copy.copy(),構造一個新的複合物件,然後將子物件引用插入到原始物件的副本中。 深拷貝:copy.deepcopy(),構造一個新的複合物件,然後遞迴地將子物件副本插入原始物件的副本。 給個栗子:
js物件的直接賦值、淺拷貝與深拷貝
最近Vue專案中寫到一個業務,就是需要把對話方塊的表單中的資料,每次點選提交之後,就存進一個el-table表格中,待多次需要的表單資料都提交進表格之後,再將這個表格提交,實現多個表單資料的同時提交,期間還可以用表格進行預覽、修改等其他操作。將每個表單資料存進表格的程式碼大致程式碼如下: let&
Python 賦值、淺拷貝和深度拷貝
前言: 在建立二維陣列時,遇到了list * n—>n shallow copies of list concatenated, n個list的淺拷貝的連線的情況 賦值、淺拷貝和深度拷貝 賦值:是物件的引用 淺拷貝(copy):拷貝父物件,不會
python的賦值、深拷貝和淺拷貝三者之間的區別
python的賦值、淺拷貝和深拷貝三者之間的區別 類似的文章已經很多了,但是在學習過程中,還是有一些模糊的地方,所以這裡把自己的理解記錄下來,便於以後複習,溫故知新! 1.賦值 賦值是將一個物件的地址賦值給一個變數,讓變數指向該地址( 舊瓶裝舊酒 )。 修改不可
Python賦值、淺拷貝、深拷貝的區別
ID IV 元素 改變 拷貝 但是 int 需要 copy 一、賦值 str例子 >>> a = 'hello' >>> b = 'hello' >>> c = a >>&
賦值、淺拷貝和深拷貝的區別?
首先要知道變數,物件,引用三者之間的關係 變數: 是一個元素, 擁有指向物件的連線空間 **物件:**被分配的一塊記憶體,儲存代表的值 引用: 是變數到物件的指標 一、賦值 在 Python 中,物件的賦值就是簡單的物件引用, 如下所示: a = [1,2,
python賦值、淺拷貝、深拷貝區別
閱讀目錄 在寫Python過程中,經常會遇到物件的拷貝,如果不理解淺拷貝和深拷貝的概念,你的程式碼就可能出現一些問題。所以,在這裡按個人的理解談談它們之間的區別。 回到頂部 一、賦值(assignment) 在《Python FAQ1》一文中,對賦值已經講的很清楚
【進階4-1期】詳細解析賦值、淺拷貝和深拷貝的區別
一、賦值(Copy) 賦值是將某一數值或物件賦給某個變數的過程,分為下面 2 部分 基本資料型別:賦值,賦值之後兩個變數互不影響 引用資料型別:賦址,兩個變數具有相同的引用,指向同一個物件,相互之間有影響 對基本型別進行賦值操作,兩個變數互不影響。 // 木易楊 let a = "muy
賦值、淺拷貝和深拷貝
直接賦值 先定義了一個變數a,然後將a變數賦值給b。則a、b兩個變數都指向記憶體中同一個物件。 public static <T> T[] extendsArray(T[] data){ int newLength = (dat
引用型別的賦值、淺拷貝和深拷貝的區別
ICloneable 介面:支援克隆,即用與現有例項相同的值建立類的新例項。 MemberwiseClone 方法:建立當前 System.Object 的淺表副本。 淺拷貝:給物件拷貝一份新的物件。 淺拷貝的定義 —— 只對值型別(或string)型別分配新的記憶