Сравнение элементов матрицы
Нужна помощь с поэлементным сравнением в матрице Для заданной матрицы размером 8 x 8 найти такие k, что элементы k-й строки матрицы совпадают с элементами k-ого столбца.
У меня ошибка в том что элементы сравнивает с учётом порядка,а надо без
from random import randint
n = 8
A = [[randint(1,2) for j in range(n)] for i in range(n)]
out_2 = [0] * n
out_1 = ["p"] * n
temp_row = [0] * n
temp_col = []
for i in range(n):
temp_col.append([0] * n)
for Row in range(n):
for Col in range(n):
print("{0:02}".format(A[Row][Col]), end=" ")
print()
for i in range(n):
for j in range(n):
temp_col[i][j] = A[j][i]
for i in range(n):
temp_row[i] = A[i]
for i in range(n):
for j in range(n):
if temp_row[i] == temp_col[j]:
out_1[i] = i
for i, (row, col) in enumerate(zip(A, zip(*A))):
if sorted(row) == sorted(col):
print(i+1,f"Ряд и колонка с индексом {i} полностью совпадают.")
else:
print(i+1,"Одинаковых строчек и столбцов в итерации ", i + 1, "не найдено")
for Row in range(n):
for number in A[Row]:
if number < 0:
out_2[Row] = sum(A[Row])
выводит
02 02 02 02 01 02 01 01
02 02 01 02 02 02 02 02
02 01 01 01 02 02 01 01
01 01 02 02 02 02 02 02
01 01 01 02 01 01 01 01
02 01 01 01 01 02 02 02
01 01 01 02 02 02 02 02
02 01 01 01 02 01 02 02
1 Ряд и колонка с индексом 0 полностью совпадают.
2 Одинаковых строчек и столбцов в итерации 2 не найдено
3 Одинаковых строчек и столбцов в итерации 3 не найдено
4 Одинаковых строчек и столбцов в итерации 4 не найдено
5 Одинаковых строчек и столбцов в итерации 5 не найдено
6 Одинаковых строчек и столбцов в итерации 6 не найдено
7 Ряд и колонка с индексом 6 полностью совпадают.
8 Одинаковых строчек и столбцов в итерации 8 не найдено
Ответы (1 шт):
Автор решения: GrAnd
→ Ссылка
Просто отсортируйте значения ряда и колонки прежде чем их сравнивать.
for i, (row, col) in enumerate(zip(A, zip(*A))):
if sorted(row) == sorted(col):
print(f"Ряд и колонка с индексами {i} полностью совпадают.")
Здесь zip(*A) транспонирует матрицу (т.е. её столбцы становятся рядами). Далее следующим zip берутся одновременно ряд из исходной матрицы и ряд из транспонированной (он же столбец из исходной). Ну и в enumerate обёрнуто, чтобы считать номер ряда/столбца).