吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 948|回复: 8
收起左侧

[求助] 这是怎么回事,对二维列表内部的数据感到迷惑

[复制链接]
brokenheart 发表于 2020-11-24 00:31
本帖最后由 brokenheart 于 2020-12-5 14:51 编辑

语言是Python;修改二维列表的数值,还会影响到 原先使用copy方法赋值的其它列表的内部数值,即使它们是不同的变量地址?三维的也是这样,
地址不同又是如何影响的,很迷惑啊?为什么一维列表又没有这种情况?
2020-11-23_234310.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Lmc520 发表于 2020-11-24 10:00
可能变量地址不同但是你赋值定义的数组地址是一样的
c03xp 发表于 2020-11-24 10:15
相当于
a1=[1,2]
a2=[3,4]
ls1=[a1,a2]
ls2=ls1.copy()相当于ls2[0]=a1 ls2[1]=a2
ls1[0][0]=0相当于a1[0]=0
 楼主| brokenheart 发表于 2020-11-24 10:53
c03xp 发表于 2020-11-24 10:15
相当于
a1=[1,2]
a2=[3,4]

也就是说通过赋值后,两个二维数组里面的一维数组指向的都是同一个地址,所以会产生相互影响。
 楼主| brokenheart 发表于 2020-11-24 12:16
明白了,原先没有真正理解内部数据怎么产生的,赋值后内部数据的地址是一样的,所以用
[Python] 纯文本查看 复制代码
ls2 = [ls1[0].copy(), ls1[1].copy()]
两个数据之间就没影响了
2020-11-24_115456.png
ixeliap 发表于 2020-11-24 14:19
列表里面的列表是一个独立的列表。
ufo0033 发表于 2020-11-24 14:47
本帖最后由 ufo0033 于 2020-11-24 14:56 编辑

python中copy只是表层copy    如果要彻底的copy成两个不同的对象    需要用 deepcopy

推荐百度下   python 坑, python中存在不少类似的点,很多是设计造成的

 楼主| brokenheart 发表于 2020-11-24 23:57
本帖最后由 brokenheart 于 2020-12-5 14:54 编辑
ufo0033 发表于 2020-11-24 14:47
[md]python中**copy**只是表层copy    如果要彻底的copy成两个不同的对象    需要用 **deepcopy**

搜了一下,才知道还有这么多坑
cube 发表于 2020-11-27 00:07
如果我没记错的话,python中的list是可变对象.
并且list的结构并不是一段连续内存,应该是类似一个链式结构.
赋值时也仅仅是把这个对象的引用赋值给指定变量.同时,其中的每一个元素也是引用/常量等等
而list.copy如字面意思,仅仅拷贝其中各个元素的引用/常量等而已.
如果你学过C,不会不了解.真正的深拷贝仅仅是主观意义上存在的.
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 11:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表