1106 1

Python copy&deepcopy [推广有奖]

贵宾

已卖:8651份资源

学术权威

10%

还不是VIP/贵宾

-

TA的文库  其他...

Data Mining

威望
3
论坛币
84087 个
通用积分
10681.7684
学术水平
669 点
热心指数
648 点
信用等级
501 点
经验
8887 点
帖子
3374
精华
20
在线时间
2895 小时
注册时间
2012-11-11
最后登录
2025-12-22

初级学术勋章 初级热心勋章 初级信用勋章 中级学术勋章 中级热心勋章 中级信用勋章 高级学术勋章 高级热心勋章 高级信用勋章

楼主
狂热的爱好者 学生认证  发表于 2014-11-6 10:34:53 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

>>> a=[[1,2],(3,5),123,[1,2,3,4]]

>>> b=copy.copy(a)

>>> b
[[1, 2], (3, 5), 123, [1, 2, 3, 4]]
>>> b[2]=456
>>> b
[[1, 2], (3, 5), 456, [1, 2, 3, 4]]

>>> a

[[1, 2], (3, 5), 123, [1, 2, 3, 4]]

a之所以没有变,是因为b修改的是不可变对象。
拷贝了一个不可变的对象的引用, 修改你得到的变量只会让该变量的引用指向一个新的对象, 别指望还能改变原来的变量的引用所指向对象的值。

>>> b[0][1]=0
>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]
>>> b
[[1, 0], (3, 5), 456, [1, 2, 3, 4]]


copy.copy只是复制的a本身,a里面的对象并没有被复制,还是引用的。等于属于浅copy


>>> c=copy.deepcopy(a)
>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]
>>> c
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]
>>> c[0][1]=12
>>>c
[[1, 12], (3, 5), 123, [1, 2, 3, 4]]
>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]
>>> c[2]=457
>>> a
[[1, 0], (3, 5), 123, [1, 2, 3, 4]]
>>> c
[[1, 4], (3, 5), 457, [1, 2, 3, 4]]

copy.deepcopy是连内部的对象一块复制的


来源:Python程序员
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python COPY deep Dee EPC

If you want something,work for it!

沙发
Itachix 发表于 2014-11-9 05:05:18
好东西啊,多谢楼主!!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 11:46