Python的浅拷贝
1、打开Python开发工具IDEL,新建‘浅拷贝.py’文件,编写代码如下:
list = []
for i in range(10):
list.append({'mykey':i})
print (list)

2、F5运行程序,打印出list列表内容:
[{'mykey': 0}, {'mykey': 1}, {'mykey': 2}, {'mykey': 3}, {'mykey': 4}, {'mykey': 5}, {'mykey': 6}, {'mykey': 7}, {'mykey': 8}, {'mykey': 9}

3、在‘浅拷贝.py’文件,继续编写代码如下;
list = []
for i in range(10):
list.append({'mykey':i})
print (list)
list1 = []
dicta = {'mykey':0}
for i in range(10):
dicta['mykey']=i
list1.append(dicta)
print (list1)

4、F5运行程序,打印出list列表内容:
[{'mykey': 0}, {'mykey': 1}, {'mykey': 2}, {'mykey': 3}, {'mykey': 4}, {'mykey': 5}, {'mykey': 6}, {'mykey': 7}, {'mykey': 8}, {'mykey': 9}
打印出list1列表内容:
[{'mykey': 9}, {'mykey': 9}, {'mykey': 9}, {'mykey': 9}, {'mykey': 9}, {'mykey': 9}, {'mykey': 9}, {'mykey': 9}, {'mykey': 9}, {'mykey': 9}]

5、这是因为浅拷贝,列表中每项都存的只是字典的引用,指向同一地址,而每次dicta['mykey']重新赋值列表中每项都随之改变。
6、清空‘浅拷贝.py’内容,重新写代码如下:
import copy
qts = ['y','z']
list1 = ['x',qts]
list = copy.copy(list1)
print (list1)
print (list)
list1.append('6')
print (list1)
print (list)
qts[0]='change'
print (list1)
print (list)

7、F5运行程序,打印出几次列表内容:
['x', ['y', 'z']]
['x', ['y', 'z']]
['x', ['y', 'z'], '6']
['x', ['y', 'z']]
['x', ['change', 'z'], '6']
['x', ['change', 'z']]

8、第一次list = copy.copy(list1)浅拷贝后,list和list1指向了相同的地址,之后
list1.append('6')这次list1增加了一个字符串的指向,与list无关,但是当他们共同指向的嵌套列表qts改变内容后,两个列表都会受到影响。