Заменить нижнюю часть матрицы на нули
Есть задача заменить верхнюю половину матрицы NxN на единицы кроме тех, которые слева от главной диагонали. Я думал так: заменить всё что выше главной диагонали на единицы и потом просто заменить всё что в нижней половине матрицы на 0. Заменил всё что выше главной диагонали на 1, но вот никак не пойму как заменить нижнюю половину матрицы на 0. пробовал делать так:
n#размер строк и столбиков
half=n/2
for i in range(n):
for j in range(n):
if i and j>half:
matrix[i][j] = 0
но вышло это :
[0, 1, 1, 1]
[0, 0, 1, 0]
[0, 0, 0, 0]
[0, 0, 0, 0]
а хотелось:
[0, 1, 1, 1]
[0, 0, 1, 1]
[0, 0, 0, 0]
[0, 0, 0, 0]
Ответы (1 шт):
Автор решения: Gladius
→ Ссылка
У меня получилось как-то так:
matrix = [[0, 1, 1, 1],
[0, 0, 1, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
n = len(matrix)
half = n // 2
if n % 2 == 1:
n -= 1
for i in range(half):
for j in range(n):
if j > i:
matrix[i][j] = 1
print(matrix)
Должно работать и с четным, и с нечетным количеством строк/столбцов