array = [[1,2,3,4,5], [5,2,5,7,2], [8,12,56,3,0], [12,12,12,12,12]]
array. sort(key = lambda x: x[-1], reverse=True)
print(array)
5*4 - это не точное описание размерности. Я сделал 4 объекта по 5 элементов, так принято измерять матрицы - сначала строки, потом столбцы, но может быть и наоборот.
Функия sort у списков опционально принимает параметр key, в который можно записать лямбду для преобразования исходных элементов массива в какие-то иные, чтоб сравнивать затем уже их.
То есть если передан key, то будут сраниваться не сами объекты массива, а то, что вернула лямбда, применённая к каждому из объектов. Вот мы как раз и хотим, чтоб сравнивались не сами массивы, а их последние элементы.
Мы знаем, что объекты массива верхнего уровня - это тоже массивы, а значит лямбда будет принимать массивы длиной 5 элементов, и для каждого из них надо будет отдать последний элемент под индексом 4. Можно было написать lambda x: x[4], но проще воспользоваться фичей питона - отрицательными индексами.
Ну и reverse указываем, потому что по умолчанию sort сортирует по возрастанию (неубыванию)