我试着创建这个代码来输入一个m×n矩阵。我想输入[[1,2,3],[4,5,6]]
,但是代码产生[[4,5,6],[4,5,6]
。当我输入其他m乘n矩阵时,同样的情况也会发生,代码生成一个m乘n矩阵,其行是相同的。
也许你能帮我找出我的代码有什么问题。
m = int(input('number of rows, m = '))
n = int(input('number of columns, n = '))
matrix = []; columns = []
# initialize the number of rows
for i in range(0,m):
matrix += [0]
# initialize the number of columns
for j in range (0,n):
columns += [0]
# initialize the matrix
for i in range (0,m):
matrix[i] = columns
for i in range (0,m):
for j in range (0,n):
print ('entry in row: ',i+1,' column: ',j+1)
matrix[i][j] = int(input())
print (matrix)
除了接受的答案外,您还可以按以下方式初始化行-
matrix[i] = [0]*n
因此,以下代码将起作用-
您可以通过这种方式接受python中的2D列表。。。
简单地
字符
或者
对于数字
其中n是列中的元素数,m是行中的元素数。
以pythonic的方式,这将创建列表列表
问题出在初始化步骤上。
这段代码实际上使您的
matrix
中的每一行引用相同的columns
对象。如果任何列中的任何项发生更改,则每一列都将更改:可以在嵌套循环中初始化矩阵,如下所示:
或者,在一行中使用列表理解:
或:
另见:
希望能有所帮助。
相关问题 更多 >
编程相关推荐