python中關于深拷貝和淺拷貝的詳解

python中關于深拷貝和淺拷貝的詳解

概述

在python的語法中,有兩種變量的拷貝方式
一種是深拷貝,一種是淺拷貝

我們先說深拷貝

語法

這里需要通過導入系統的copy模塊中的deepcopy才可以
import copy
新的對象 = copy.deepcopy(被拷貝對象)

解釋

深拷貝是將操作對象整體復制出來一份,與其原來拷貝的對象沒有聯系,拷貝后重新分配一個內存地址
對拷貝和的對象進行各種操作,原對象也不收到影響

再來說淺拷貝

語法

淺拷貝的語法很多
新的對象 = 被拷貝對象
新的對象 = 被拷貝對象.copy()
新的對象 = lis被拷貝對象t0[:]
import copy
新的對象 = copy.copy(被拷貝對象)

解釋

淺拷貝中,雖然對象本身的地址發生了改變,但是對象中包含的數據還是原來的地址,僅僅是傳遞過來一個引用
指向了原來對象中的數據,如果改變其中一個對象中的內容,其另一方也會對應更改
(這里需要注意,如果更改的數據類型是不可更改對象,則改變的是其引用,本身沒有改變,只是這個位置的數據換成了另一個地址中的)

下面看一下代碼的測試(小編的測試環境是python3.8版本)


import copylist0 = [['abc'], '秋葉夏風']
list1 = list0
list2 = list0.copy()
list3 = list0[:]
list4 = copy.copy(list0)
list5 = copy.deepcopy(list0)
list6 = copy.deepcopy(list0)print('0', list0, '拷貝的對象的地址:', id(list0), '第一個元素的地址:', id(list0[0]))
print('1', list1, '拷貝的對象的地址:', id(list1), '第一個元素的地址:', id(list1[0]))
print('2', list2, '拷貝的對象的地址:', id(list2), '第一個元素的地址:', id(list2[0]))
print('3', list3, '拷貝的對象的地址:', id(list3), '第一個元素的地址:', id(list3[0]))
print('4', list4, '拷貝的對象的地址:', id(list4), '第一個元素的地址:', id(list4[0]))
print('5', list5, '拷貝的對象的地址:', id(list5), '第一個元素的地址:', id(list5[0]))
print('6', list6, '拷貝的對象的地址:', id(list6), '第一個元素的地址:', id(list6[0]))print('---------------------------------改變拷貝對象的內容--------------------------------')list1[0] = 1
list2[0] = 2
list3[0] = 3
list4[0][0] = 4
list5[0][0] = 5
list6[0] = 6print('0', list0, '拷貝的對象的地址:', id(list0), '第一個元素的地址:', id(list0[0]))
print('1', list1, '拷貝的對象的地址:', id(list1), '第一個元素的地址:', id(list1[0]))
print('2', list2, '拷貝的對象的地址:', id(list2), '第一個元素的地址:', id(list2[0]))
print('3', list3, '拷貝的對象的地址:', id(list3), '第一個元素的地址:', id(list3[0]))
print('4', list4, '拷貝的對象的地址:', id(list4), '第一個元素的地址:', id(list4[0]))
print('5', list5, '拷貝的對象的地址:', id(list5), '第一個元素的地址:', id(list5[0]))
print('6', list6, '拷貝的對象的地址:', id(list6), '第一個元素的地址:', id(list6[0]))

結果如下:

D:\Python38\python.exe E:/PycharmProjects/python_August/day09/關于列表的拷貝問題.py
0 [['abc'], '秋葉夏風'] 拷貝的對象的地址: 2209540405760 第一個元素的地址: 2209541417472
1 [['abc'], '秋葉夏風'] 拷貝的對象的地址: 2209540405760 第一個元素的地址: 2209541417472
2 [['abc'], '秋葉夏風'] 拷貝的對象的地址: 2209540405888 第一個元素的地址: 2209541417472
3 [['abc'], '秋葉夏風'] 拷貝的對象的地址: 2209541418112 第一個元素的地址: 2209541417472
4 [['abc'], '秋葉夏風'] 拷貝的對象的地址: 2209541417152 第一個元素的地址: 2209541417472
5 [['abc'], '秋葉夏風'] 拷貝的對象的地址: 2209541418176 第一個元素的地址: 2209541417792
6 [['abc'], '秋葉夏風'] 拷貝的對象的地址: 2209541417856 第一個元素的地址: 2209541416896
---------------------------------改變拷貝對象的內容--------------------------------
0 [1, '秋葉夏風'] 拷貝的對象的地址: 2209540405760 第一個元素的地址: 140708592568128
1 [1, '秋葉夏風'] 拷貝的對象的地址: 2209540405760 第一個元素的地址: 140708592568128
2 [2, '秋葉夏風'] 拷貝的對象的地址: 2209540405888 第一個元素的地址: 140708592568160
3 [3, '秋葉夏風'] 拷貝的對象的地址: 2209541418112 第一個元素的地址: 140708592568192
4 [[4], '秋葉夏風'] 拷貝的對象的地址: 2209541417152 第一個元素的地址: 2209541417472
5 [[5], '秋葉夏風'] 拷貝的對象的地址: 2209541418176 第一個元素的地址: 2209541417792
6 [6, '秋葉夏風'] 拷貝的對象的地址: 2209541417856 第一個元素的地址: 140708592568288Process finished with exit code 0

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455542.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455542.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455542.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

運動估計簡介

運動估計( Motion Estimation) 維基百科鏈接:http://en.wikipedia.org/wiki/Motion_estimation運動估計的應用有很多,最初的應用的領域是視頻的編碼。運動估計算法一般分為: 像素遞歸法pel-recursive algorithm (PRA)和塊匹配法 block-matching algorith…

tutte定理證明hall定理_深入淺出|中心極限定理(Central Limit Theorem)及證明

在介紹統計學中最重要的定理之一-中心極限定理-之前&#xff0c;我們先來想一個問題&#xff1a;統計學的目的是什么&#xff1f;根據<Mathematical statistics with application 7th Edition>書中所寫的&#xff1a;統計學的目的是基于從總體中的樣本所獲得的信息&#…

讓數據中心變得更加友好

通常來說&#xff0c;數據中心是一個安全防護十分嚴密的地方&#xff0c;其安全功能的設計旨在阻止不速之客的訪問。但專家認為數據中心可以變得更加友好&#xff0c;因為數據中心需要在人類社會中發揮更大的作用。 數據中心的整體概念是一種可以通過云計算或其他方法進行遠程訪…

traceroute/tracert--獲取網絡路由路徑

traceroute 是用來檢測發出數據包的主機到目標主機之間所經過的網關數量的工具。traceroute 的原理是試圖以最小的TTL發出探測包來跟蹤數據包到達目標主機所經過的網關&#xff0c;然后監聽一個來自網關ICMP的應答。發送數據包的大小默認為 38個字節。 通過traceroute我們可以知…

使用Cygwin實現vlc 1.0.5的wince移植

本文完全參照了天將降的博客文章&#xff0c;寫于此以作來日備忘之用&#xff0c;原文地址&#xff1a;http://bk6.blog.163.com/blog/static/24498560201051193449196/ 第一步&#xff1a;下載安裝Cygwin。筆者建議大家不要安裝不完整的版本&#xff0c;以免出現不必要的錯誤…

andriod studio 運行 無結果_華為物聯網操作系統LiteOS內核教程01——IoT-Studio介紹及安裝...

1. 物聯網一站式開發工具 —— IoT StudioIoT Studio 是支持 LiteOS 嵌入式系統軟件開發的工具&#xff0c;提供了代碼編輯、編譯、燒錄 及調試等一站式開發體驗&#xff0c;支持 C、C、匯編等多種開發語言&#xff0c;讓您快速&#xff0c;高效地進 行物聯網開發。2. IoT Stud…

5G通信技術能否終結商用WiFi?

科技創新與體育發展可謂相生相伴&#xff0c;而如今科技在體育領域的應用也越來越廣泛。本周的話題關于5G技術與球場&#xff0c;作者為英國體育娛樂營銷咨詢公司Stadia Solutions的聯席首席執行官戈登坎貝爾。在坎貝爾先生看來&#xff0c;球場Wi-Fi賦予了俱樂部對數據的掌控力…

顏色轉換

以藍色為例&#xff0c;#0000FF應該被表示成rgb(0,0,255)。 我們將函數命名為getRGB() &#xff08;可以將字符串視為數組&#xff0c;這個數組的元素為字符&#xff09; function getRGB(color) {var rgb [parseInt(0xcolor.slice(1,3)),parseInt(0xcolor.slice(3,5)),parseI…

wince ./configure

CPPFLAGS"-I/usr/wince/include -D_WIN32_WCE0x0500" LDFLAGS"-L/usr/wince/lib" ./configure--hostarm-mingw32ce 指定軟件運行的系統平臺&#xff1b;host就是你編譯好的程序可以運行的平臺--target-osmingw32ce 指定軟件面向(target to)的系統平臺.這主…

android 按鍵會觸發ontouch嗎?_Android實現炫酷的拖拽浮動按鈕

IOS的Assistive Touch效果很炫酷&#xff0c;可以任意拖拽&#xff0c;同時點擊后會展開菜單欄。然而&#xff0c;這不只是IOS的特權&#xff0c;Android也可以實現。但是由于懸浮窗需要申請權限&#xff0c;所以本文僅在app內實現&#xff0c;可以任意拖拽&#xff0c;并可以響…

強名稱程序集(strong name assembly)——為程序集賦予強名稱

引言&#xff1a;在曾經的項目開發中&#xff0c;在程序集中見到過一個后綴為*.snk的文件。當時看這個文件的圖標。感覺可能是企業內部保護版權啥的一種方式。一&#xff0c;強程序集攻克了哪些問題&#xff1f;1&#xff0c;唯一標識一個程序集2&#xff0c;放置程序集被仿冒和…

如何成為一名合格的數據分析師

“21世紀什么最貴&#xff0c;人才”&#xff0c;在目前大數據時代下&#xff0c;什么最難找&#xff0c;什么最貴&#xff0c;實現數據價值的人&#xff0c;數據分析師。 但是對于數據分析師的認識&#xff0c;比較極端&#xff0c;但對數據分析師價值的認識正在回歸理性。很多…

【ffmpeg for wince】音視頻編解碼多平臺移植(for window/wince))ffmpeg

from: http://www.cnblogs.com/windwithlife/archive/2009/05/31/1492728.html 終于完成了了第二個Client side原型&#xff08;for Wince)&#xff0c;其中花掉我最多時間的就是ffmpeg的對WINCE的移植。其中有大半時間是由于網上的一些不完整及不正確信息所誤導&#xff0c;但…

Java 重寫(Override)與重載(Overload)

重寫(Override) 重寫是子類對父類的允許訪問的方法的實現過程進行重新編寫&#xff01;返回值和形參都不能改變。即外殼不變&#xff0c;核心重寫&#xff01; 重寫的好處在于子類可以根據需要&#xff0c;定義特定于自己的行為。也就是說子類能夠根據需要實現父類的方法。在面…

銀聯pos小票word模板_商家pos機刷卡必須知道的知識

相信很多卡友伙伴或者商鋪店家都裝有pos機&#xff0c;然后一般pos機都沒有使用說明書&#xff0c;更沒有結合刷卡方法在內的秘籍。今天我就分享下刷卡必須知道的一些知識。剛剛辦理pos機的當天一定要注意&#xff1a;使用之前呢&#xff0c;務必核對一下基本信息&#xff0c;例…

《Ext JS權威指南》——2.4節關于Ext.onReady

2.4 關于Ext.onReady 代碼為什么寫在Ext.onReady中&#xff0c;而不是在body中添加一個onload事件并在onload事件中運行呢&#xff1f;主要原因是Ext.onReady在DOM模型加載完畢后即可進行操作&#xff0c;而無需像onload事件那樣&#xff0c;等待頁面的所有資源都加載完畢后才…

git push 提交時顯示 Empty reply from server的解決辦法

輸入 git fetch origin --prune 參考鏈接&#xff1a;https://stackoverflow.com/questions/28364023/gits-error-on-push-empty-reply-from-server 轉載于:https://www.cnblogs.com/team42/p/6941678.html

轉]移動視頻監控(1)---項目綜述

對于市場上的視頻監控系統&#xff0c;大家都有一定的了解&#xff0c;就是視頻采集&#xff0c;經過無線/有線發送到服務或代理&#xff0c;客戶從服務或代理上得到視頻/音頻流。不復雜。 對于不遠的將來&#xff0c;3G&#xff0c;4G的到來&#xff0c;對移動的業務有一個推動…

java 空接口_學Java,java接口搞明白了嗎?大牛讓你一文搞清楚

前言對于面向對象編程來說&#xff0c;抽象是一個極具魅力的特征。如果一個程序員的抽象思維很差&#xff0c;那他在編程中就會遇到很多困難&#xff0c;無法把業務變成具體的代碼。在 Java 中&#xff0c;可以通過兩種形式來達到抽象的目的&#xff0c;一種是抽象類&#xff0…

Check Point CEO:“我們正在積極尋找收購目標”

Check Point Sofrware Technologies很可能成為下一個會產生收購案的主流安全廠商&#xff0c;首席執行官Gil Shwed在該公司第二季度財報電話會議上這樣表示。 “我們正在積極地尋求收購目標&#xff0c;期待無論是大規模的還是小規模的擴張&#xff0c;”Shwed表示。“我們在并…