天天看點

Python 的深淺拷貝 終于明白了

    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>&gt;&gt;&gt; </code><code>import</code> <code>copy</code>

<code>&gt;&gt;&gt; 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>&gt;&gt;&gt; a </code><code>=</code> <code>l1</code>

<code>&gt;&gt;&gt; b </code><code>=</code> <code>copy.copy(a) </code><code># 淺拷貝</code>

<code>&gt;&gt;&gt; c </code><code>=</code> <code>copy.deepcopy(a) </code><code># 深拷貝</code>

<code>&gt;&gt;&gt; l1.append(</code><code>7</code><code>)</code>

<code>&gt;&gt;&gt; l1[</code><code>3</code><code>].append(</code><code>'d'</code><code>)</code>

<code>&gt;&gt;&gt; </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>&gt;&gt;&gt; </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>&gt;&gt;&gt; </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>&gt;&gt;&gt; </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,如需轉載請自行聯系原作者