|
|
|
|
|
|
-
1 #直接赋值
2 list = [1,2,['a','b'],'python']
3 #现将a等于list
4 a = list
5 print a
6 [1,2,['a','b'],'python']
7 list.append(5)
8 print list
9 [1,2,['a','b'],'python',5]
10 print a
11 [1,2,['a','b'],'python',5]
12 #直接赋值其实是传递对象的引用,原始列表改变,被赋值的a也会做相同的改变。
1 #如果需要拷贝对象,需要使用标准库中的copy模块。
2 import copy
3 # copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象。
4 list = [1,2,['a','b'],'python']
5 #b浅拷贝了list
6 b = copy.copy(list)
7 list[3] = 'java'
8 print list
9 [1, 2, ['a', 'b'], 'java']
10 print b
11 [1, 2, ['a', 'b'], 'python']
12 #是的b没有改变因为整个列表是父级的,我来修改一个子级的:
13 list[2][0] = 'A'
14 print list
15 [1, 2, ['A', 'b'], 'java']
16 print b
17 [1, 2, ['A', 'b'], 'python']
18 #修改成功。
1 #深拷贝,拷贝父对象和子对象
2 c = copy.deepcopy(list)
3
4 list[0]=3
5
6 print list
7 [3, 2, ['A', 'b'], 'java']
8
9 print c
10 [1, 2, ['A', 'b'], 'java']
11 #修改子对象
12 list[2][1] = 'B'
13
14 print list
15 [3, 2, ['A', 'B'], 'java']
16
17 print c
18 [1, 2, ['A', 'b'], 'java']
19 #所有对象都拷贝,所以在改动源对象时,深拷贝的对象是无法改变的
发表于
2016-12-29 16:12
姬尼玛
阅读( 326)
评论()
收藏
举报
|
|