python 深淺拷貝不之前一直不太了解,隻是概念性的了解像 1,2 所說,敲完下面代碼希望你可以了解。
1、copy.copy 淺拷貝 隻拷貝父對象,不會拷貝對象的内部的子對象。
2. copy.deepcopy 深拷貝 拷貝對象及其子對象
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<code>>>> </code><code>import</code> <code>copy</code>
<code>>>> l1 </code><code>=</code> <code>[</code><code>1</code><code>,</code><code>3</code><code>,</code><code>5</code><code>,[</code><code>'a'</code><code>,</code><code>'b'</code><code>,</code><code>'c'</code><code>]]</code>
<code>>>> a </code><code>=</code> <code>l1</code>
<code>>>> b </code><code>=</code> <code>copy.copy(a) </code><code># 淺拷貝</code>
<code>>>> c </code><code>=</code> <code>copy.deepcopy(a) </code><code># 深拷貝</code>
<code>>>> l1.append(</code><code>7</code><code>)</code>
<code>>>> l1[</code><code>3</code><code>].append(</code><code>'d'</code><code>)</code>
<code>>>> </code><code>print</code> <code>'l1='</code><code>,l1</code>
<code>l1</code><code>=</code> <code>[</code><code>1</code><code>, </code><code>3</code><code>, </code><code>5</code><code>, [</code><code>'a'</code><code>, </code><code>'b'</code><code>, </code><code>'c'</code><code>, </code><code>'d'</code><code>], </code><code>7</code><code>]</code>
<code>>>> </code><code>print</code> <code>'a='</code><code>,a</code>
<code>a</code><code>=</code> <code>[</code><code>1</code><code>, </code><code>3</code><code>, </code><code>5</code><code>, [</code><code>'a'</code><code>, </code><code>'b'</code><code>, </code><code>'c'</code><code>, </code><code>'d'</code><code>], </code><code>7</code><code>]</code>
<code>>>> </code><code>print</code> <code>'b='</code><code>,b</code>
<code>b</code><code>=</code> <code>[</code><code>1</code><code>, </code><code>3</code><code>, </code><code>5</code><code>, [</code><code>'a'</code><code>, </code><code>'b'</code><code>, </code><code>'c'</code><code>, </code><code>'d'</code><code>]] </code>
<code>>>> </code><code>print</code> <code>'c='</code><code>,c</code>
<code>c</code><code>=</code> <code>[</code><code>1</code><code>, </code><code>3</code><code>, </code><code>5</code><code>, [</code><code>'a'</code><code>, </code><code>'b'</code><code>, </code><code>'c'</code><code>]] </code><code># 深拷貝資料沒有變化</code>
備注:深淺拷貝的差別在于嵌套部分,淺拷貝和被拷貝對象的嵌套部分的元素是同一個,
一個改變其他的也會改變,列入上文執行個體 l1 = [1,3,5,['a','b','c']] ,嵌套部分是 ['a','b','c'], 這裡的資料發生變化,淺拷貝也會發生變化。
本文轉自 水滴石川1 51CTO部落格,原文連結:http://blog.51cto.com/sdsca/1983766,如需轉載請自行聯系原作者