找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3547|回复: 3

[已解决] 奇怪的列表

1

主题

1

帖子

9

积分

贫民

积分
9
Getdone 发表于 2016-4-27 09:16:41 | 显示全部楼层 |阅读模式
Python 3.5中,d=[[0]*3]*3
md=[[0,0,0],[0,0,0],[0,0,0]]
d==md
得到True


但是
d[0][:]=[1,2,3]
得到
d=[[1, 2, 3], [1, 2, 3], [1, 2,3]]


md[0][:]=[1,2,3]
得到
[[1, 2, 3], [0, 0, 0], [0, 0, 0]]


为什么呢?




回复

使用道具 举报

0

主题

11

帖子

11

积分

贫民

积分
11
随心 发表于 2016-5-5 22:05:42 | 显示全部楼层
原因是设定了d=[[0]*3]*3   
回复 支持 反对

使用道具 举报

1

主题

2

帖子

2

积分

贫民

积分
2
chliwe314 发表于 2016-8-15 13:34:53 | 显示全部楼层
mod = [[0]*3]*3这条命令相当于:
a=[0]*3
mod = [a]*3
那么要注意了,这里的a是可变对象,那么mod =[a,a,a]里面的三个a都是同一个东西,你修改了第一个a,后面的都修改了
回复 支持 反对

使用道具 举报

5

主题

101

帖子

101

积分

版主

Rank: 7Rank: 7Rank: 7

积分
101

最佳新人活跃会员热心会员突出贡献

QQ
落叶秋风 发表于 2016-8-15 22:38:59 | 显示全部楼层
楼上正解,我来说个废话,水个经验
回复 支持 反对

使用道具 举报

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

本版积分规则

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