为什么数组中的输入会覆盖每行的值

时间:2016-12-14 20:39:58

标签: python multidimensional-array

我有这段代码

x=3
a=x*[x*[0]]
for i in range(0,x):
   for j in range(0,x):
       dt=int(input("insert data: "))
       a[i][j]=dt
       print(a)

它应该只是在询问时添加数字,但由于某种原因它填充了所有行中的数字

1 个答案:

答案 0 :(得分:3)

您刚刚创建了3行,其中a=x*[x*[0]]具有相同的引用。 x*[0]构建一次,并由外部乘法运算符在所有行上传播。

更改行会更改所有行。请注意,它可能很有用(但显然不是很明显)

改为(使用列表理解):

a=[x*[0] for _ in range(x)]

所以每行的引用都是分开的