在下面的Python程序中,python程序的矩阵加法为2*2,当矩阵将零matrix3=[[0]*col]*row和赋值给矩阵时,为两行提供相同的输出(错误)。为附加操作提供正确的输出。
row = int(input("Enter the number of rows:"))
col = int(input("Enter the number of columns:"))
matrix1 = []
for i in range(row):
a1 =[]
for j in range(col):
a1.append(int(input()))
matrix1.append(a1)
print("1st matrix")
for i in range(row):
for j in range(col):
print(matrix1[i][j], end = " ")
print()
print("Enter Elements of 2nd Matrix")
matrix2=[]
for i in range(row):
a2 =[]
for j in range(col):
a2.append(int(input()))
matrix2.append(a2)
print("2nd matrix")
for i in range(row):
for j in range(col):
print(matrix2[i][j], end = " ")
print()
matrix3=[[0]*col]*row
print("additing matrices:")
'''
#Give Correct output
for i in range(row):
matrix3.append([])
for j in range(col):
matrix3[i].append(matrix1[i][j]+matrix2[i][j])
'''
#Give Wrong Output for 2*2 matrix with both rows as same
for i in range(row):
for j in range(col):
matrix3[i][j]=matrix1[i][j]+matrix2[i][j]
for i in range(row):
for j in range(col):
print(matrix3[i][j], end = " ")
print()代码输出

发布于 2020-01-27 06:28:14
在矩阵计算部分尝试此方法。
matrix3 = []
for i in range(row):
temp = []
for j in range(col):
temp.append(matrix1[i][j] + matrix2[i][j])
matrix3.append(temp) 更新:尝试将matrix3变量声明为
matrix3 = [[0]*col for _ in range(row)]效果很好。
matrix3 = [[0]*col]*row在这里,matrix3[0]和matrix3[1] --这两个嵌套列表具有相同的引用,您可以检查引用id(matrix3[0]),这意味着如果您更改matrix3[0],它将更改matrix3[1]
https://stackoverflow.com/questions/59925893
复制相似问题