设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 12261|回复: 2
打印 上一主题 下一主题

数组修改问题

[复制链接]

1

主题

0

好友

17

积分

新手上路

Rank: 1

跳转到指定楼层
楼主
发表于 2018-1-5 17:12:18 |只看该作者 |倒序浏览
本帖最后由 非谢家之宝树 于 2018-1-5 17:15 编辑

L1=[[1,2,3],[4,5,6],[7,8,0]]
L2=sorted(L1[::],reverse = True)
L2[2][1],L2[2][0]=L2[2][0],L2[2][1]
这组程序执行后为啥L1被改变了?想不明白啊
python3.6 IDE:vs2017
第三句执行完L1就变了。。
回复

使用道具 举报

6

主题

2

好友

654

积分

实习版主

Rank: 7Rank: 7Rank: 7

沙发
发表于 2018-1-5 20:20:41 |只看该作者
20180105.PNG
个人理解,就像L2=L1,L1如果是列表的话,L2的操作会影响到L1的内容,因为L1和L2指向的是同一个列表,在这里先把L1和L2称为这个列表的'指针'。
这里sorted()的操作,只是对L1内元素进行排序,元素如果是列表的话,相当于对'指针'排序。
换句话说,L2=sorted(L1)虽然是生成了新的列表L2,对它内容修改的话相当于修改掉排序后的'指针',并不影响L1内的‘指针’。但是如果通过新排序后的'指针'修改原列表的内容,那么L1'指针'指向该列表,内容自然发生变化。

没查到确切的资料,以后有理解再来修改哈~
回复

使用道具 举报

1

主题

0

好友

17

积分

新手上路

Rank: 1

板凳
发表于 2018-1-8 09:19:18 |只看该作者
本帖最后由 非谢家之宝树 于 2018-1-8 10:11 编辑

哦哦,我理解这个意思了,感谢你的解答。发现用copy也不行,搜了下资料,发现二维数组要用deepcopy才行
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-23 15:35 , Processed in 0.015750 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部