def matrix_parse(matrix): out = [] for row in matrix.split('\n'): out.append([int(col) for col in row.split()]) return out def matrix_from_file(file): with open(file, 'r') as file: return matrix_parse(file.read()) def matrix_sum(matrix): row_sum = [] col_sum = [0 for col in range(len(matrix)+1)] for row in matrix: row_sum.append(sum(row)) for idx, col in enumerate(row): col_sum[idx] += col return row_sum, col_sum def matrix_sort_row(matrix): row_sum, col_sum = matrix_sum(matrix) out = [] for index, row in sorted( [i for i in enumerate(row_sum)], key=lambda x:x[1] ): out.append(matrix[index]) return out; def matrix_sort_col(matrix): row_sum, col_sum = matrix_sum(matrix) out = [] places = sorted( [i for i in enumerate(col_sum)], key=lambda x:x[1]) for index, row in enumerate(matrix): out.append([row[i[0]] for i in places]) return out def matrix_get_element_width(matrix): max = 0 for row in matrix: for element in row: if max < len(str(element)): max = len(str(element)) return max def matrix_print(matrix, width=None): if not width: return matrix_print(matrix, matrix_get_element_width(matrix)) for row in matrix: print('', *['{:{}d}'.format(el, width) for el in row], '', sep=' | ') m1 ='''10 5 4 20 9 33 27 16 11 6 55 3''' # m1 = matrix_parse(m1) # print(m1) # print(matrix_sum(m1)) # print(matrix_get_element_width(m1)) # matrix_print(m1) m2 = matrix_from_file('./matrix.txt') print(matrix_sum(m2))