Почему python программа для сложения матрицы 2 * 2, дающая одинаковый вывод для обеих строк, когда матрица вывода 2 * 2 инициализируется нулем и назначает выход? - PullRequest
0 голосов
/ 27 января 2020

Ниже 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()

Вывод для кода

enter image description here

1 Ответ

0 голосов
/ 27 января 2020

попробуйте это в разделе расчета матрицы

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]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...