一、物件的直接賦值
a =[1
,4,5
]b =
b = a
print
(a == b)
print(id
(a))
print(id
(b))
這種賦值是內容和位址的完全相同的,a和b在內容和記憶體位址上是等價的。修改任意乙個列表,a或者b,兩者同時改變。
true
1905039397384
1905039397384
二、 淺複製
方法1:切片返回列表的元素
a =[1
,4,5
]b =
b = a[:]
print
(a == b)
print(id
(a))
print(id
(b))
這種切片賦值方式是b對a的物件引用,兩者的位址不同,單內容相同,改變a或者b不會同時改變。
true
2327904342536
2327934061704
print
(a is b)
判斷物件是否一致
false
方法2:使用list
a =[1
,4,5
]b =
b =list
(a)print
(a == b)
print(id
(a))
print(id
(b))
print
(a is b)
true
1908907987464
1908908542472
false
和切片方法效果一致
方法三:copy函式
import copy
a =[1,
4,5]
b =[
]b = copy.copy(a)
print
(a == b)
print(id
(a))
print(id
(b))
print
(a is b)
js陣列賦值 引用 深複製 淺複製
如 var a 1,2,3,4 var b b a 這個不是把值賦值過去而是b作為a的引用,b改變的是a 如何b指向的是乙個新陣列,a把元素值全部賦值過去?1 普通陣列可以使用varb concat a 2 我遇到乙個jquery物件型別的陣列是 object array 型別,其拼接的陣列字串為 ...
php引用複製,淺複製clone和深複製
1.引用複製 class a a new a b a 引用賦值 a info 10 echo a info.echo b info.die 結果如下 2.淺複製clone class a a new a b clone a clone a info 10 echo a info.echo b inf...
物件複製與淺複製
a 15 echo a.輸出15 b a echo b.輸出15 b 25 echo b.輸出25 echo a.輸出15 可以發現,普通變數是值傳遞,在不同的記憶體空間,其中乙個改變對於另乙個沒有影響 class student public function setage age public ...