|
导入模块:
1
2
3
4
5
6
7
8
9
10
11
| >>> a = [1,2,3,['a','b','d']]
>>> b = a
>>> a
[1, 2, 3, ['a', 'b', 'd']]
>>> b
[1, 2, 3, ['a', 'b', 'd']]
>>> id(a)
139712705065616
>>> id(b)
139712705065616
#定义二元列表,标签引用,且查看内存地址一致,但不能作为依据
|
调用copy.copy模块,进行拷贝 浅拷贝
观察c的地址空间,通过copy是独立的
1
2
3
4
5
6
7
8
| >>> c
[1, 2, 3, ['a', 'b', 'd']]
>>> a
[1, 2, 3, ['a', 'b', 'd']]
>>> id(c)
139712705068784 #注意
>>> id(a)
139712705065616 #注意
|
向序列增加值:
1
2
3
4
5
6
7
| >>> a.append('d')
>>> a
[1, 2, 3, ['a', 'b', 'd'], 'd']
>>> b
[1, 2, 3, ['a', 'b', 'd'], 'd'] #b指向的是同一地址空间
>>> c
[1, 2, 3, ['a', 'b', 'd']] #c未改变
|
浅拷贝只拷贝父对象:
1
2
3
4
5
6
| >>> id(a[3])
139712704967456
>>> id(c[3])
139712704967456
>>> id(a[4])
139712705357456
|
#注意上述可变类型的子对象地址空间未改变,
调用copy.deepcopy模块,进行拷贝 深拷贝
1
| >>> d = copy.deepcopy(a)
|
查看地址空间
1
2
3
4
5
6
7
8
| >>> id(a)
139712705065616
>>> id(d)
139712705065688
>>> id(a[3])
139712704967456
>>> id(d[3])
139712705068640 #此处是不一致的
|
向序列增加值:
1
2
3
4
5
6
7
8
9
10
| >>> a.append('e')
>>> a
[1, 2, 3, ['a', 'b', 'd', 'd'], 'd', 'e']
>>> d
[1, 2, 3, ['a', 'b', 'd', 'd'], 'd']
>>> a[3].append('x')
>>> a
[1, 2, 3, ['a', 'b', 'd', 'd', 'x'], 'd', 'e']
>>> d
[1, 2, 3, ['a', 'b', 'd', 'd'], 'd']
|
对对象资源的拷贝:
1
2
3
4
5
| >>> id(a[3])
139712704967456
>>> id(d[3])
139712705068640
#注意上述可变类型的子对象地址空间发生改变
|
|
|