Khi cần sắp xếp ma trận dựa trên số lượng phần tử lớn hơn phần tử đứng ngay trước nó trong cùng hàng, ta dùng list comprehension và len() trong hàm khóa sắp xếp.
Ví dụ
def fetch_greater_freq(row):
return len([row[idx] for idx in range(0, len(row) - 1) if row[idx] < row[idx + 1]])
my_list = [[11, 3, 25, 99, 10], [5, 3, 25, 4], [77, 11, 5, 3, 77, 77], [11, 3, 25]]
print("Danh sách ban đầu:")
print(my_list)
my_list.sort(key=fetch_greater_freq)
print("Danh sách sau khi sắp xếp:")
print(my_list)
Kết quả
Danh sách ban đầu: [[11, 3, 25, 99, 10], [5, 3, 25, 4], [77, 11, 5, 3, 77, 77], [11, 3, 25]] Danh sách sau khi sắp xếp: [[5, 3, 25, 4], [77, 11, 5, 3, 77, 77], [11, 3, 25], [11, 3, 25, 99, 10]]
Giải thích
Hàm
fetch_greater_freqđếm số cặp liên tiếp mà phần tử sau lớn hơn phần tử trước.Ma trận được sắp xếp tăng dần theo số lượng này.