Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么每次迭代后整列的值都会发生变化,而不仅仅是一个特定的单元格?_Python_Arrays_Python 3.x_List_Matrix - Fatal编程技术网

Python 为什么每次迭代后整列的值都会发生变化,而不仅仅是一个特定的单元格?

Python 为什么每次迭代后整列的值都会发生变化,而不仅仅是一个特定的单元格?,python,arrays,python-3.x,list,matrix,Python,Arrays,Python 3.x,List,Matrix,我正在尝试将python列表转换为没有numpy库的2d矩阵 然而,在这样做时,我的代码并没有像预期的那样工作 n=3 arr = [16,13,4,16,13,19,23,8,11] mat=[[0]*n]*n #initialising a 3*3 matrix for a in range(n): for b in range(n): mat[a][b]=arr[b] print(mat)

我正在尝试将python列表转换为没有numpy库的2d矩阵

然而,在这样做时,我的代码并没有像预期的那样工作

n=3
arr = [16,13,4,16,13,19,23,8,11]  
mat=[[0]*n]*n                    #initialising a 3*3 matrix 
for a in range(n):
    for b in range(n):
        mat[a][b]=arr[b]
        print(mat)               #To understand the result of each iteration
    if len(arr) >n:
        arr=arr[n:] 
print(mat)
获得的输出为:

[[16,0,0],[16,0,0],[16,0,0]]
[[16,13,0],[16,13,0],[16,13,0]]
[16,13,4],[16,13,4],[16,13,4]
[16,13,4],[16,13,4],[16,13,4]
[16,13,4],[16,13,4],[16,13,4]
[[16,13,19],[16,13,19],[16,13,19]]
[[23,13,19],[23,13,19],[23,13,19]]
[[23,8,19],[23,8,19],[23,8,19]]
[23,8,11],[23,8,11],[23,8,11]]

最后:

[23,8,11],[23,8,11],[23,8,11]]

而不是:

[16,13,4],[16,13,19],[23,8,11]]

为什么每次迭代后整列的值都会改变,而不仅仅是那个单元格


代码中有哪些可能的更改可以产生所需的结果(即,将9个元素的列表转换为3x3矩阵)?

您可以使用切片来实现这一点

n=3
twoD_array=[]
arr = [16,13,4,16,13,19,23,8,11]
for i in range(0,len(arr),n):
        twoD_array.append(arr[i:i+n])

print(twoD_array)