*****
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...