无法理解2d矩阵结果python

时间:2018-04-02 03:43:51

标签: python-3.x matrix 2d

我正在输入一个二维矩阵,我试图在开始和结束时为每一列和每行添加3个零。

arr2d = [[j for j in input().split(' ')] for i in range(20)] 
arr1d = [0]*len(arr2d)
array = []

for j in range(3):
    arr2d.insert(0,arr1d)
    arr2d.insert(len(arr2d),arr1d)
for k in range(len(arr2d)):
    for i in range(3):
        arr2d[k].append(0)
        arr2d[k].insert(0,0)

我的意见是这个。

input

但我获得了以下输出。

output

1 个答案:

答案 0 :(得分:0)

执行arr2d.insert(0,arr1d)时,您未插入arr1d副本;您正在插入arr1d 本身。稍后当您使用arr2d[k].append(0)执行k = 0之类的操作时,由于arr2d[0]arr1d,因此您正在修改arr1d(也是{{} 1}}以及arr2d[1]等等。因此,添加到第一行和最后三行的前面或后面的任何零都将被添加到所有中。

这是一个更简单的例子来说明究竟发生了什么:

arr2d[2]