Python问题?

x=[[1]]*3print(x)x[0][0]=5print(x)为什么改变一个数值,其余的则会跟着改变?是不是相当于把1拷贝了2个,放上去?那两个相当于1的反映?... x = [[1]] * 3
print(x)
x[0][0]=5
print(x)
为什么改变一个数值,其余的则会跟着改变?是不是相当于把1拷贝了2个,放上去?那两个相当于1的反映?
展开
 我来答
microroom
科技发烧友

2021-01-02 · 智能家居/数码/手机/智能家电产品都懂点
知道大有可为答主
回答量:7118
采纳率:83%
帮助的人:1635万
展开全部
因为[[1]]*3拷贝的是[1],拷贝的是一个列表的引用,而不是数值1。

即x=[[1]]*3执行完后,x保存了3个引用,这3个引用保存的是同一个列表对象的地址。

通过任何一个引用修改了列表对象的值后,通过其它引用访问到的列表对象也是修改后的。

因为这3个引用保存的是同一个列表对象的地址。

这就像你有许多编了号的箱子,而你在一个编号为1的箱子中放了一个苹果,然后将这个编号1写在了a、b、c3张纸上。

然后通过其中一张纸找到编号为1的箱子,换掉了这个箱子中的东西,那通过另外两张纸找到这个箱子时,里面的东西自然也是换掉了的,因为找到的是同一个箱子。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式