Python的浅拷贝

2025-10-19 18:50:16

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改变内容后,两个列表都会受到影响。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢