码迷,mamicode.com
首页 > 编程语言 > 详细

python中的copy与deepcopy

时间:2018-07-11 21:57:11      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:不难   赋值运算   例子   二层   多少   改变   运算   地址   epc   

引子:首先我们有一个赋值运算作为引子,如下

1 l1 = [1, 2, 3, [java, python]]
2 l2 = l1
3 l1[0] = 111
4 print(l1)    #输出结果:[111, 2, 3, [‘java‘, ‘python‘]]
5 print(l2)    #输出结果:[111, 2, 3, [‘java‘, ‘python‘]]
6 #由上面的例子我们不难明白,python中对于赋值运算来说,l1与l2指向的是同一个地址,所以他们是完全一样的。

1.浅拷贝copy()

 1 l1 = [1, 2, 3, [java, python]]
 2 l2 = l1.copy()
 3 print(l1,id(l1))      #输出结果:[1, 2, 3, [‘java‘, ‘python‘]] 46594648
 4 print(l2,id(l2))      #输出结果:[1, 2, 3, [‘java‘, ‘python‘]] 46861728
 5 
 6 l1[2] = 222
 7 print(l1,id(l1))      #输出结果:[1, 2, 222, [‘java‘, ‘python‘]] 46594648
 8 print(l2,id(l2))      #输出结果:[1, 2, 3, [‘java‘, ‘python‘]] 46861728
 9 
10 l1[1] = 333
11 print(l1,id(l1))      #输出结果:[1, 333, 222, [‘java‘, ‘python‘]] 86112856
12 print(l2,id(l2))      #输出结果:[1, 2, 3, [‘java‘, ‘python‘]] 86707576
13 
14 l1[3][0] = c++
15 print(l1,id(l1))      #输出结果:[1, 333, 222, [‘c++‘, ‘python‘]] 88013360
16 print(l2,id(l2))      #输出结果:[1, 2, 3, [‘c++‘, ‘python‘]] 88608080
17 #对于浅拷贝来说,第一层创建的是新的地址,然而第二层就不一样的,输入的改变也会影响到拷贝项的改变

2.深拷贝deepcopy

 1 import copy
 2 l1 = [1, 2, 3, [java, python]]
 3 l2 = copy.deepcopy(l1)
 4 
 5 print(l1,id(l1))      #输出结果:[1, 2, 3, [‘java‘, ‘python‘]] 57042104
 6 print(l2,id(l2))      #输出结果:[1, 2, 3, [‘java‘, ‘python‘]] 57043024
 7 
 8 l1[2] = 222
 9 print(l1,id(l1))      #输出结果:[1, 2, 222, [‘java‘, ‘python‘]] 57042104
10 print(l2,id(l2))      #输出结果:[1, 2, 3, [‘java‘, ‘python‘]] 57043024
11 
12 l1[1] = 333
13 print(l1,id(l1))      #输出结果:[1, 333, 222, [‘java‘, ‘python‘]] 57042104
14 print(l2,id(l2))      #输出结果:[1, 2, 3, [‘java‘, ‘python‘]] 57043024
15 
16 l1[3][0] = c++
17 print(l1,id(l1))      #输出结果:[1, 333, 222, [‘c++‘, ‘python‘]] 57042104
18 print(l2,id(l2))      #输出结果:[1, 2, 3, [‘java‘, ‘python‘]] 57043024
19 #对于深拷贝deepcopy来说,无论创建多少个,这些每个之间都是独立的,改变任意一个元素,
20 #都不会影响到其他的,无论多少层都是一样的

 

python中的copy与deepcopy

标签:不难   赋值运算   例子   二层   多少   改变   运算   地址   epc   

原文地址:https://www.cnblogs.com/rcat/p/9296769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!