python之淺拷貝深拷貝

文章目錄

  • 潛拷貝(shallow copy)
  • 深拷貝(deep copy)

總結一下python的淺拷貝和深拷貝.

潛拷貝(shallow copy)

python中潛拷貝指的是:構造一個新的復合對象,然后將原對象中的對象引用插入其中
平常開發過程中潛拷貝是比深拷貝更常見的場景.
比如編程中使用到的一些基本的復合類型(list, dict等)是自帶shallow copy函數的,比如下面的例子

from collections import dequel = [1,2,3]
l.copy()
s = set([1,2,3])
s.copy()
d = {'a':1,'b':2}
d.copy()
q = deque([1, 2, 3])
q.copy()

python官方有copy這個內置的模塊來完成潛拷貝和深拷貝.如下例子

from collections import deque
import copy
from dataclasses import dataclass@dataclass
class Test:name: strage: intdef test2():l = [Test(name='a', age=1), Test(name='b', age=2)]l_copy = copy.copy(l)print(id(l))print(id(l_copy))l[0].name = 'a_update'print(l_copy[0].name == l[0].name)if __name__ == '__main__':test2()

輸出

138121816082688
138121816084736
True

列表類型潛拷貝還可以使用分片語法比如l_copy = l[:]也是潛拷貝.

深拷貝(deep copy)

python中深拷貝是指:構造一個新的復合對象,然后遞歸地插入原對象中對象的副本
使用copy.deepcopy實現,如下例子:

from collections import deque
import copy
from dataclasses import dataclass@dataclass
class Test:name: strage: intdef test3():l = [Test(name='a', age=1), Test(name='b', age=2)]l_copy = copy.deepcopy(l)print(id(l))print(id(l_copy))l[0].name = 'a_update'print(l_copy[0].name == l[0].name)if __name__ == '__main__':test3()

輸出結果:

123638090725824
123638090725952
False

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

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

相關文章

普通大學本科生如何入門強化學習?

問題:你平時是如何緊跟大型語言模型和智能體技術前沿的?有哪些具體的學習和跟蹤方式?回答:我會通過“輸入-內化-實踐”結合的方式跟蹤前沿。首先,學術動態方面,每天花10分鐘瀏覽arXiv的http://cs.CL和http://cs.AI板塊&#xff0c…

新手向:Python實現數據可視化圖表生成

Python數據可視化入門:從零開始生成圖表數據可視化是數據分析過程中不可或缺的關鍵環節,它通過將抽象的數字信息轉化為直觀的圖形展示,幫助分析師和決策者更快速、更準確地發現數據中隱藏的模式、規律和發展趨勢。在當今大數據時代&#xff0…

VBA即用型代碼手冊:計算選擇的單詞數Count Words in Selection

我給VBA下的定義:VBA是個人小型自動化處理的有效工具。可以大大提高自己的勞動效率,而且可以提高數據的準確性。我這里專注VBA,將我多年的經驗匯集在VBA系列九套教程中。作為我的學員要利用我的積木編程思想,積木編程最重要的是積木如何搭建及…

DNS(域名系統)

分層結構根域名(ipv4,13臺),二級域名,三級域名……相關記錄A將域名解析為ipv4地址AAAA將域名解析為ipv6地址MX指名該區域為郵件服務區PTR反向查詢將主機名解析為域名NS記錄服務器的名字CNAME別名查詢方式遞歸查詢迭代查…

【大模型】強化學習算法總結

角色和術語定義 State:狀態Action:動作Policy/actor model:策略模型,用于決策行動的主要模型Critic/value model:價值模型,用于評判某個行動的價值大小Reward model:獎勵模型,用于給…

基于梅特卡夫定律的開源鏈動2+1模式AI智能名片S2B2C商城小程序價值重構研究

摘要:梅特卡夫定律揭示了網絡價值與用戶數量的平方關系,在互聯網經濟中,連接的深度與形式正因人的參與發生質變。本文以開源鏈動21模式、AI智能名片與S2B2C商城小程序的協同應用為研究對象,通過實證分析其在社群團購、下沉市場等場…

Ubuntu22.04安裝CH340驅動及串口

一、CH340驅動安裝 1.1 查看USB設備能否被識別 CtrlAltT打開終端: lsusb 插入設備前: 插入設備后: 輸出中包含ID 1a86:7523 QinHeng Electronics CH340 serial converter的信息,這表明CH340設備已經被系統識別。 1.2 查看USB轉串…

CPU緩存(CPU Cache)和TLB(Translation Lookaside Buffer)緩存現代計算機體系結構中用于提高性能的關鍵技術

CPU緩存(CPU Cache)和TLB(Translation Lookaside Buffer)緩存是現代計算機體系結構中用于提高性能的關鍵技術。它們通過減少CPU訪問數據和指令的延遲來提高系統的整體效率。以下是對這兩者的詳細解釋: 1. CPU 緩存 CPU…

唐揚·高并發系統設計40問

課程下載:https://download.csdn.net/download/m0_66047725/91644703 00開篇詞 _ 為什么你要學習高并發系統設計?.pdf 00開篇詞丨為什么你要學習高并發系統設計?.mp3 01 _ 高并發系統:它的通用設計方法是什么?.pdf …

基于Spring Data Elasticsearch的分布式全文檢索與集群性能優化實踐指南

基于Spring Data Elasticsearch的分布式全文檢索與集群性能優化實踐指南 技術背景與應用場景 隨著大數據時代的到來,海量信息的存儲與檢索成為各類應用的核心需求。Elasticsearch 作為一款分布式搜索引擎,憑借其高可擴展、高可用和實時檢索的優勢&#x…

Linux系統編程——基礎IO

一些前置知識:文件 屬性 內容文件 分為 打開的文件、未打開的文件打開的文件:由進程打開,本質是 進程與文件 的關系;維護的文件對象先加載文件屬性,文件內容一般按需加載未打開的文件:在永久性存儲介質 —…

力扣164:最大間距

力扣164:最大間距題目思路代碼題目 給定一個無序的數組 nums,返回 數組在排序之后,相鄰元素之間最大的差值 。如果數組元素個數小于 2,則返回 0 。 您必須編寫一個在「線性時間」內運行并使用「線性額外空間」的算法。 思路 這道題的思路…

Redis類型之Hash

1.hash常用操作 這里還是要強調,redis的類型指的是value的類型。故而這里的hash是把key這一層組織完成以后,到了value這一層,value的其中一種類型還可以是hash。1.1 HSET 和 HGETHSET:設置hash類型的keyHSET key field value [fie…

Apache Pulsar性能與可用性優化實踐指南

Apache Pulsar性能與可用性優化實踐指南 一、技術背景與應用場景 隨著微服務、實時計算和大數據平臺的普及,消息系統承擔了海量數據的傳輸與解耦任務。Apache Pulsar作為新一代分布式消息與流處理系統,擁有多租戶、持久化存儲和靈活一致性的特點&#xf…

工單分類微調訓練運維管理工具原型

簡述需求進展之前,我嘗試用Longformer模型來訓練工單分類系統,但問題很快就暴露出來:Longformer訓練時間長得讓人抓狂,每次訓練只能針對一個租戶的數據,無法快速適配多個租戶的需求。切換一個使用相同標簽的租戶還能夠…

@CacheConfig??當前類中所有緩存方法詳解

CacheConfig??當前類中所有緩存方法詳解在 Spring Cache 抽象中,CacheConfig 是一個??類級別注解??,用于為??當前類中的所有緩存方法(如 Cacheable、CachePut、CacheEvict)提供默認配置??。其核心作用是??避免在每個方…

正確使用SQL Server中的Hint(10)—Hint簡介與Hint分類及語法(1)

9.5. 正確使用Hint 9.5.1. Hint簡介 與Oracle等其他關系庫類似,SQL Server中,也提供了諸多Hint用于支持SQL調優,那就是通過正確應用Hint技術,可以指示CBO為SQL語句產生和選擇最合理而高效的查詢計劃。Hint確實可以做到很容易的對CBO產生影響,但因為多數場景中,CBO都能為…

Redis的分布式序列號生成器原理

Redis 分布式序列號生成器的核心原理是利用 Redis 的原子操作和高性能特性,在分布式系統中生成全局唯一、有序的序列號。其設計通常結合業務需求(如有序性、長度限制、高并發),通過 Redis 的原子命令(如 INCR、INCRBY&…

2025年SEVC SCI2區,基于深度強化學習與模擬退火的多無人機偵察任務規劃,深度解析+性能實測

目錄1.摘要2.問題定義3.SA-NNO-DRL方法4.結果展示5.參考文獻6.算法輔導應用定制讀者交流1.摘要 無人機(UAV)因其高自主性和靈活性,廣泛應用于偵察任務,多無人機任務規劃在交通監控和數據采集等任務中至關重要,但現有方…

汽車娛樂信息系統域控制器的網絡安全開發方案

引言1.1 項目背景隨著汽車行業的快速發展和智能化、網聯化的趨勢日益明顯,汽車娛樂信息系統(In-Vehicle Infotainment System,IVIS)已經成為現代汽車的重要組成部分。汽車娛樂信息系統不僅提供了豐富的多媒體功能,如音…