Есть матрица (список списков).
Необходимо изменить числа на главной диагонали: если число меньше нуля, то заменить на 0, иначе на единицу.
Пример:
Ввод:
[
[-1, 4, -5, -9, 3 ],
[ 6, -4, -7, 4, -5 ],
[ 3, 5, 0, -9, -1 ],
[ 1, 5, -7, -8, -9 ],
[-3, 2, 1, -5, 6 ]
]
Вывод:
[
[ 0, 4, -5, -9, 3 ],
[ 6, 0, -7, 4, -5 ],
[ 3, 5, 1, -9, -1 ],
[ 1, 5, -7, 0, -9 ],
[-3, 2, 1, -5, 1 ]
]
Главная диагональ - с левого верхнего угла в правый нижний
Написала программу, где создается новая матрица с числами.
Но при обращении к индексу списка (он пустой изначально) вылетает исключение.
Почему пишет indexerror?
Код:
def res(m):
matrix = [[] for _ in range(len(m))] # новая пустая матрица
for i in range(len(m)):
for j in range(len(m[i])):
if i == j and m[i][j] < 0: # i - индекс списка в матрице, j - индекс элем. в конкретном сп.
matrix[i][j] = 0 # новый элемент, равный нулю. Здесь и вылетает исключение
elif i == j and m[i][j] >= 0:
matrix[i][j] = 1
else:
matrix[i][j] = m[i][j]
return matrix
print(res([
[-1, 4, -5, -9, 3],
[6, -4, -7, 4, -5],
[3, 5, 0, -9, -1],
[1, 5, -7, -8, -9],
[-3, 2, 1, -5, 6]
]))
Исключение:
matrix[i][j] = 0
IndexError: list assignment index out of range