Question:
Check that all rows in a matrix are sorted in descending order. If they are not all in descending order, find the first row out of order and order it the same as the others.
With this code I get the rows in descending order:
matrix = [[-5, -6, 2], [7, 1, -3], [8, 4, -9]]
for row in matrix:
if all(x - y > 0 for x, y in zip(row[:-1], row[1:])):
print(row)
That is, with the code it checks the rows ordered in descending order and prints those that are:
[7, 1, -3]
[8, 4, -9]
It is necessary to obtain the disordered row, in this case it would be row 0, and order it the same as the others. The output should be:
[2, -5, -6]
[7, 1, -3]
[8, 4, -9]
Answer:
According to the response to Angel's comment, a couple of list comprehensions
do the dirty work
matrix = [[-5, -6, 2], [7, 1, -3], [8, 4, -9]]
sted = [x for x in matrix if x == sorted(x, reverse=True)]
# Las no ordenadas están en matrix pero no en "sted"
nsted = [sorted(x, reverse=True) for x in matrix if x not in sted]
print('\n'.join(map(str, sted)))
print()
print('\n'.join(map(str, nsted)))
print('\n'.join(map(str, sted)))
With the following result
[7, 1, -3]
[8, 4, -9]
[2, -5, -6]
[7, 1, -3]
[8, 4, -9]
The original array remains unchanged and we have separate sub-arrays with the rows that were sorted and the unsorted now sorted