關於容器 列表的深拷貝和淺拷貝

2021-08-18 14:23:38 字數 632 閱讀 5999

### 深拷貝

```python3

import copy

l = [3.1,3.2]

l1 = [1,2,l]

l2 = copy.deepcopy() #深拷貝

l[0] = 3.14

print(l1)#[1,2[3.14,3.2]]

print(l2)#[1,2,[3.1,3.2]]

```### 淺拷貝

```python3

l = [3.1,3.2]

l1 = [1,2,l]

l2 = l1.copy() #淺拷貝

l[0] = 3.14

print(l1) #[1,2,[3.14,3.2]]

print(l2) #[1,2,[3.14,3.2]]

```---

### 區別,理解

>淺拷貝的優勢:因為沒有執行複製,所以節約記憶體空間,

>淺拷貝的缺點:如果被copy的物件是乙個可變的物件。則會出現資料不可控的衝突

>深拷貝的優勢:因為執行複製了容器全部的關係樹,所以會消耗一部分記憶體空間,同時也會消耗一部分系統資源

>通常只對可變物件進行複製,不可變物件通常只需要淺拷貝

關於深拷貝和淺拷貝

以nsstring與nsmutablestring舉例 nsstring str1 xfj nsmutablestring str2 str1 mutablecopy nslog str1,str2 nslog p p str1,str2 輸出結果 xfj xfj123 0x102701068 0x...

C 關於深拷貝和淺拷貝

在c 中,資料型別有值型別和引用型別 值型別包括 結構體 數值型別,bool型,使用者定義的結構體 列舉,可空型別。引用型別包括 陣列,使用者定義的類 介面 委託,object,字串。對於值型別的,拷貝是全拷貝,則是拷貝出另乙個物件,兩個物件的記憶體位址是不同的,乙個物件的屬性修改後不影響另乙個物件...

列表的深拷貝與淺拷貝

lst0 0,1,3,3 lst1 0,1,3,3 lst3 0,1,2,3,11,12,13,14 print lst0 lst1 true 比較兩個列表的值 print lst0 is lst1 false 比較兩個列表的id lst1 lst0 lst0 lst1同時指向同乙個列表,所以改變任...