日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python中浅拷贝与深拷贝的骚操作

發(fā)布時間:2024/9/15 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python中浅拷贝与深拷贝的骚操作 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:繆斯mius@阿里云Python訓練營

博客地址:https://blog.csdn.net/m0_37759382/article/details/108489108

【例子】淺拷貝與深拷貝中

list1?=?[123,?456,?789,?213] list2?=?list1 list3?=?list1[:] print(list2)?? #?[123,?456,?789,?213] print(list3)?? #?[123,?456,?789,?213] list1.sort() print(list2)?? #?[123,?213,?456,?789]? **print(list3)?? #?[123,?456,?789,?213]** list1?=?[[123,?456],?[789,?213]] list2?=?list1 list3?=?list1[:] print(list2)?? #?[[123,?456],?[789,?213]] print(list3)?? #?[[123,?456],?[789,?213]] list1[0][0]??=?111 print(list2)?? #?[[111,?456],?[789,?213]] **print(list3)?? #?[[111,?456],?[789,?213]]

小朋友,你是否有很多問號?????

為什么同樣是list3 = list1[:]
執(zhí)行l(wèi)ist1.sort() 操作,list3不發(fā)生變化
執(zhí)行l(wèi)ist1[0][0] ?= 111 操作,list3發(fā)生變化

首先我們先了解到python的拷貝有淺拷貝和深拷貝之分

序號操作語句拷貝類型
1Y= X直接賦值(淺拷貝)
2Z = X [:]淺拷貝
3P = copy.copPy(X)淺拷貝
4K = copy.deepcopy(X)深拷貝


接下來我們來探索一下,這些個淺拷貝和深拷貝具體細節(jié)上有什么區(qū)別呢?

看看這個case

import?copy X?=?[1,3,5,['我','是','第','二','維','度'],9,11] Y=?X?#?直接賦值(淺拷貝) Z?=?X?[:]?#?淺拷貝? P?=?copy.copy(X)??#?淺拷貝? K?=?copy.deepcopy(X)#?深拷貝?#現(xiàn)在我們在X數(shù)組的第三個值里面添加一個'哈哈',把里面的是改為不是 X[3].append('哈哈') X[3][1]?=?'不是'#我們打印一下結果瞧一瞧 print("起始列表X為?:?",?X) print("把X列表賦值給Y為?:?",?Y) print("淺拷貝X列表給Z為?:?",?Z) print("淺拷貝X列表給P為?:?",?P) print("深拷貝X列表給K為?:?",?K)

輸出結果為:

起始列表X為?:??[1, 3, 5, ['我',?'不是',?'第',?'二',?'維',?'度',?'哈哈'],?9,?11] 把X列表賦值給Y為?:??[1, 3, 5, ['我',?'不是',?'第',?'二',?'維',?'度',?'哈哈'],?9,?11] 淺拷貝X列表給Z為?:??[1, 3, 5, ['我',?'不是',?'第',?'二',?'維',?'度',?'哈哈'],?9,?11] 淺拷貝X列表給P為?:??[1, 3, 5, ['我',?'不是',?'第',?'二',?'維',?'度',?'哈哈'],?9,?11] 深拷貝X列表給K為?:??[1, 3, 5, ['我',?'是',?'第',?'二',?'維',?'度'],?9,?11]

是不是發(fā)現(xiàn)深拷貝與淺拷貝的一點點區(qū)別啦 ^ . ^只有深拷貝不被更改**!!!**


辣么,我現(xiàn)在想要把X列表的第三值 ['我','是','第','二','維','度'] 改為 7,把最后一個值改為101,看看這些個淺拷貝和深拷貝又是怎么表現(xiàn)的......

import?copy X?=?[1,3,5,['我','是','第','二','維','度'],9,11] Y=?X??#?直接賦值(淺拷貝) Z?=?X?[:]?#?淺拷貝? P?=?copy.copy(X)?#?淺拷貝? K?=?copy.deepcopy(X)#?深拷貝?

現(xiàn)在我們修改X數(shù)組的第三個值,把最后一個值改為101

X[3]?=?7 X[-1]?=?101

我們打印一下結果瞧一瞧

print("起始列表X為?:?",?X) print("把X列表賦值給Y為?:?",?Y) print("淺拷貝X列表給Z為?:?",?Z) print("淺拷貝X列表給P為?:?",?P) print("深拷貝X列表給K為?:?",?K)

輸出結果為:

起始列表X為?:??[1, 3, 5, 7, 9, 101]?? 把X列表賦值給Y為?:??[1, 3, 5, 7, 9, 101]?? 淺拷貝X列表給Z為?:??[1, 3, 5, ['我',?'是',?'第',?'二',?'維',?'度'],?9,?11]?? 淺拷貝X列表給P為?:??[1, 3, 5, ['我',?'是',?'第',?'二',?'維',?'度'],?9,?11]?? 深拷貝X列表給K為?:??[1, 3, 5, ['我',?'是',?'第',?'二',?'維',?'度'],?9,?11]??

咦!?發(fā)現(xiàn)了什么 ?~. ~有的淺拷貝背叛了同胞 ! 和深拷貝的表現(xiàn)是一樣的


結合上面的例子,我們發(fā)現(xiàn),對二維列表中的第一維數(shù)據(jù)做修改時,使用 = 進行賦值,對X的修改會影響Y,使用 ?[:] , copy.copy() ?, copy.deepcopy() 進行賦值,對X的修改不會影響新的賦值。

如果是對二維列表中的第一維數(shù)據(jù)做增加或者刪除操作呢?試一試咯

import?copy X?=?[1,3,5,['我','是','第','二','維','度'],9,11] Y=?X??#?直接賦值(淺拷貝) Z?=?X?[:]#?淺拷貝? P?=?copy.copy(X)?#?淺拷貝? K?=?copy.deepcopy(X)#?深拷貝?#在X數(shù)組最后添加13,刪除第0個值 X.append(13) X.remove(1)#我們打印一下結果瞧一瞧 print("起始列表X為?:?",?X) print("把X列表賦值給Y為?:?",?Y) print("淺拷貝X列表給Z為?:?",?Z) print("淺拷貝X列表給P為?:?",?P) print("深拷貝X列表給K為?:?",?K)

輸出結果為:

起始列表X為?:??[3, 5, ['我',?'是',?'第',?'二',?'維',?'度'],?9,?11,?13]?? 把X列表賦值給Y為?:??[3, 5, ['我',?'是',?'第',?'二',?'維',?'度'],?9,?11,?13]?? 淺拷貝X列表給Z為?:??[1, 3, 5, ['我',?'是',?'第',?'二',?'維',?'度'],?9,?11]?? 淺拷貝X列表給P為?:??[1, 3, 5, ['我',?'是',?'第',?'二',?'維',?'度'],?9,?11]?? 深拷貝X列表給K為?:??[1, 3, 5, ['我',?'是',?'第',?'二',?'維',?'度'],?9,?11]

我們發(fā)現(xiàn),對二維列表中的第一維數(shù)據(jù)做增加或者刪除操作
同樣是只有使用 = 進行賦值,對X的修改會影響Y
于是乎,我們可以把上面的 修改 擴充為 增刪改 (改也就包括了排序sort()操作喲)
即對二維列表中的第一維數(shù)據(jù)做 增刪改 操作時,blabla......

你以為這就結束了嗎?

我,第二維數(shù)據(jù)不想被修改,也不想用深拷貝,怎么辦?
別急,append和 [:] 組合服用就能夠達到深拷貝deepcopy的效果啦 ===>看

X?=?[['我','幾','維','度'],['我','是','第','二','維','度'],['我','不','說']] Y=?X??#?直接賦值(淺拷貝) Z?=?X?[:]?#?淺拷貝? P?=?copy.copy(X)??#?淺拷貝? K?=?copy.deepcopy(X)??#?深拷貝? TT?=?[] for?i?in?X:TT.append(i[:])?#?我是騷操作#修改第二維度信息 X[1].append('哈哈') X[1][1]?=?'不是'#我們打印一下結果瞧一瞧 print("起始列表X為?:?",?X) print("把X列表賦值給Y為?:?",?Y) print("淺拷貝X列表給Z為?:?",?Z) print("淺拷貝X列表給P為?:?",?P) print("深拷貝X列表給K為?:?",?K) print("騷操作X列表給TT為?:?",?TT)

輸出結果為:

起始列表X為?:??[['我',?'幾',?'維',?'度'],?['我',?'不是',?'第',?'二',?'維',?'度',?'哈哈'],?['我',?'不',?'說']] 把X列表賦值給Y為?:??[['我',?'幾',?'維',?'度'],?['我',?'不是',?'第',?'二',?'維',?'度',?'哈哈'],?['我',?'不',?'說']] 淺拷貝X列表給Z為?:??[['我',?'幾',?'維',?'度'],?['我',?'不是',?'第',?'二',?'維',?'度',?'哈哈'],?['我',?'不',?'說']] 淺拷貝X列表給P為?:??[['我',?'幾',?'維',?'度'],?['我',?'不是',?'第',?'二',?'維',?'度',?'哈哈'],?['我',?'不',?'說']] 深拷貝X列表給K為?:??**[['我',?'幾',?'維',?'度'],?['我',?'是',?'第',?'二',?'維',?'度'],?['我',?'不',?'說']] 騷操作X列表給TT為?:??**[['我',?'幾',?'維',?'度'],?['我',?'是',?'第',?'二',?'維',?'度'],?['我',?'不',?'說']]

由于微信平臺算法改版,公號內容將不再以時間排序展示,如果大家想第一時間看到我們的推送,強烈建議星標我們和給我們多點點【在看】。星標具體步驟為:

(1)點擊頁面最上方“小詹學Python”,進入公眾號主頁。 (2)點擊右上角的小點點,在彈出頁面點擊“設為星標”,就可以啦。 感謝支持,比心。

總結

以上是生活随笔為你收集整理的Python中浅拷贝与深拷贝的骚操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品成人久久久久久久 | 国产小视频免费 | 又黄又爽又色的视频 | 性欧美lx╳lx╳ | 欧美成人三级在线播放 | 亚洲第二色 | 五月婷婷综| 女人18毛片水真多18精品 | 中文字幕免费高清网站 | 双腿张开被9个男人调教 | wwwsss在线观看 | 午夜伦理影院 | 欧美一区| 欢乐谷在线观看免费播放高清 | 久久99伊人 | 色资源在线观看 | 骚虎av在线 | 欧美性猛交xxxx偷拍洗澡 | 91午夜在线 | 日韩电影在线一区二区 | 让人下面流水的视频 | 色婷婷久久一区二区三区麻豆 | 免费黄色高清视频 | 色综合九九 | 性生生活大片又黄又 | 精品少妇v888av | 男人操女人网站 | 有声小说 成人专区 | 一级黄色片看看 | 美女娇喘 | 色哟哟在线观看视频 | 亚洲开心网| 伊人天堂av | 鲁丝一区二区三区 | 色综合免费 | 四虎一国产精品一区二区影院 | 狠久久 | 国产 欧美 自拍 | 日韩一级特黄 | 国产精品一区二三区 | 成人二区三区 | 国产a一级 | 国产片一区二区三区 | 国产农村妇女毛片精品 | 精品国产乱码久久久久久久 | 欧美欧美欧美 | 风间由美av在线 | 亚洲永久视频 | 五月天青青草 | 欧美精品少妇 | 最新中文字幕免费视频 | 国产91成人 | 动漫涩涩免费网站在线看 | www啪啪 | 人妻无码久久精品人妻 | 国产夜色视频 | 亚洲人在线观看视频 | 久久欧美| 97人人草 | 青青草视频在线免费观看 | 欧美国产精品一二三 | 狠狠操狠狠插 | 美女福利视频导航 | 午夜日韩在线观看 | 向日葵视频在线 | 亚洲免费久久 | 91爱在线观看 | 黄色片久久久久 | 伊人久久久久噜噜噜亚洲熟女综合 | 色二区| 久草手机在线 | 催眠调教艳妇成肉便小说 | 成人午夜视频一区二区播放 | 国产在线播放网站 | 亚洲色图欧美自拍 | 久久免费视频精品 | 国产一区二区不卡在线 | 国模无码大尺度一区二区三区 | 日韩成人高清视频在线观看 | 亚洲成人久久久久 | 成人免费超碰 | 欧美一线高本道 | 91精品中文字幕 | 国产精品一二三 | 国产又粗又猛又色又 | 欧美色女人 | 操丝袜少妇| 一本视频 | 日韩免费电影一区 | jizzjizz视频| 丝袜亚洲综合 | www.777含羞草 | 性生活视频软件 | 密臀av一区二区 | 久久99精品久久久久久三级 | 黄色精品一区 | 国产欧美日韩专区 | 韩国伦理中文字幕 | 亚洲视频在线免费 |