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

Python 为什么数组中的输入会覆盖每行的值,python,multidimensional-array,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) 当被询问时,它应该只添加数字,但出于某种原因,它会填充所有行中的数字您刚刚创建了3行,其中有相同的引用a=x*[x*[0]]x*[0]只生成一次,并通过外部乘法运算符在所有行上传播 更改一行将更改所有行。请注意,它可能

我有这段代码

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)

当被询问时,它应该只添加数字,但出于某种原因,它会填充所有行中的数字

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

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

改为这样做(使用列表):


因此,每一行的引用都是分开的

python对象引用的乐趣。我必须承认,我不久前也被抓住了:)是的,显然,它今天仍然吸引着我;)
a=[x*[0] for _ in range(x)]