番外 深淺copy

2022-05-17 02:39:10 字數 1670 閱讀 2514

*****

copy是什麼意思?

複製(又學乙個單詞!開不開森)

那啥叫複製呢?

我們曾經有過這樣的印象

a = "zhangsan"

b = a

a = "jack"

print(a, b) # jack zhangsan

這樣就相當於用 b 複製了 一遍 a 對吧!

那你在網上down文章的時候,作者把文章刪除了

你的電腦裡就沒了嗎?

要是沒了?那我存在硬碟裡的女神學習資料豈不是儲存不住了?

所以我用b複製乙份之後,a就算變了。也跟我b沒得關係

但是我們還發現過這樣的情況

a = [1, 2, 3, [1, 2, 3]]

b = a

a[-1][1] = "jack"

print(a, b) # [1, 2, 3, [1, 'jack', 3]] [1, 2, 3, [1, 'jack', 3]]

不對啊!!!!!

這和剛開始說的不一樣啊!!!!

a變了b怎麼也變了???????

當我們操作字串的時候,就相當於在記憶體位址(黃色框)裡開闢乙個空間,裡面存afwaf,並把它叫做 a

然後當 b=a 時看似是 紅色的b指向a 實際上是 綠色的b指向afwaf

然後當 a = af 的時候,又開闢乙個空間,裡面存 af 並把它叫做 a

不能有兩個一樣的變數名(講變數的時候講過了)

所以 a 指向 afwaf 的紅色線就斷了

所以現在

a 就是 af b就是 afwaf

而當我們操作可變的資料型別,比如列表,字典等,就是這樣的

當我對列表進行修改的時候,就不再開闢新的記憶體空間

而是!共!享!內!存!空!間!

這樣,a 和 b 就是始終相等的

給你一張偷來的圖

可以看到 copy 的 只是第一層的記憶體位址,但是第二層,還是共享記憶體空間的!

所以,只改變第一層,就不會共享,各改各的

但是改到第二層,就會共享,你動我也動!

深copy 就一句話

你動你的,跟我沒關係

來個練習題吧

*有點彆扭*

*多做習題*

集合 深淺copy

集合 特點 集合是可變的資料型別,但他裡面的元素必須是不可變的資料型別,無序,不可重複。建立 set1 set 或者直接建立set2 集合的增刪查 增 add set1.add 女生 update set1.update abc 迭代,類似於列表的extend 刪 pop set1.pop 隨機刪除...

補充 python深淺copy

name liming lilongfei duanwenchao tangeng 11 yuxiaobin name2 name.copy 淺copy,只copy第一層 print name print name2 name 1 haha 當修改name的第一層時,name2不發生變化 name ...

集合及深淺copy

集合是無序的,不重複的資料集合,它裡面的元素是可雜湊的 不可變型別 但是集合本身是不可雜湊 所以集合做不了字典的鍵 的。以下是集合最重要的兩點 1.去重,把乙個列表變成集合,就自動去重了。2.關係測試,測試兩組資料之前的交集 差集 並集等關係。1.賦值運算 l1 1,2,3,cat dog l2 l...