Python的浅拷贝

时间:2026-02-12 18:21:57

1、打开Python开发工具IDEL,新建‘浅拷贝.py’文件,编写代码如下:

list = []

for i in range(10):

    list.append({'mykey':i})

print (list)

Python的浅拷贝

2、F5运行程序,打印出list列表内容:

[{'mykey': 0}, {'mykey': 1}, {'mykey': 2}, {'mykey': 3}, {'mykey': 4}, {'mykey': 5}, {'mykey': 6}, {'mykey': 7}, {'mykey': 8}, {'mykey': 9}

Python的浅拷贝

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)

Python的浅拷贝

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}]

Python的浅拷贝

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)

Python的浅拷贝

7、F5运行程序,打印出几次列表内容:

['x', ['y', 'z']]

['x', ['y', 'z']]

['x', ['y', 'z'], '6']

['x', ['y', 'z']]

['x', ['change', 'z'], '6']

['x', ['change', 'z']]

Python的浅拷贝

8、第一次list = copy.copy(list1)浅拷贝后,list和list1指向了相同的地址,之后

list1.append('6')这次list1增加了一个字符串的指向,与list无关,但是当他们共同指向的嵌套列表qts改变内容后,两个列表都会受到影响。

© 2026 智德知识库
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com