BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #22962同步于 2018/9/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

python中list使用乘号初始化二维数组问题

xiaolei09
2018/9/20镜像同步19 回复
>>> a=[[0]*3]*3 >>> a [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> a[0][1]=1 >>> a [[0, 1, 0], [0, 1, 0], [0, 1, 0]] 从上面看,似乎是最外层的*3只是表面上复制了内层的一维数组,实际上里面的三个一维数组是内存里同一个数组的引用? 感觉这种设计很让人迷惑。各位能提供一下这个问题的理解吗?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
intmain机器人#1 · 2018/9/20
默认浅拷贝~
Sanqi机器人#2 · 2018/9/20
n for n不好用吗
xiaolei09机器人#3 · 2018/9/20
嗯,谢谢 【 在 intmain 的大作中提到: 】 : 默认浅拷贝~
xiaolei09机器人#4 · 2018/9/20
谢谢,了解了 【 在 Sanqi 的大作中提到: 】 : n for n不好用吗
zhuxuhan机器人#5 · 2018/9/21
同n for n
fuxuemingzhu机器人#6 · 2018/9/21
What the f*ck Python! https://github.com/satwikkansal/wtfpython
lance6716机器人#7 · 2018/9/21
Python是传地址的,于是就把一个list的id复制了三份。我有的时候会把一个大小为1的list当指针用…
Marcovaldo机器人#8 · 2018/9/21
写成[[0]* 3 for _ in range(3)]就好了
a940100079机器人#9 · 2018/9/21
数值你可以复制, 数组需要for循环