Khi cần in ra N hàng có tổng lớn nhất từ ma trận, ta dùng sorted() với key=lambda và cắt list.
Ví dụ
my_list = [[2, 4, 6, 7], [2, 4, 8], [45], [1, 3, 5, 6], [8, 2, 1]]
print("Danh sách là:")
print(my_list)
my_key = 3
print("Giá trị K:", my_key)
my_result = sorted(my_list, key=lambda row: sum(row), reverse=True)[:my_key]
print("Danh sách kết quả:")
print(my_result)
Kết quả đầu ra
Danh sách là: [[2, 4, 6, 7], [2, 4, 8], [45], [1, 3, 5, 6], [8, 2, 1]] Giá trị K: 3 Danh sách kết quả: [[45], [2, 4, 6, 7], [1, 3, 5, 6]]
Giải thích
sum(row)tính tổng mỗi hàng: 19, 14, 45, 15, 11.sorted(..., key=lambda row: sum(row), reverse=True)sắp xếp giảm dần theo tổng.[:my_key]lấy 3 hàng đầu (tổng lớn nhất).- Kết quả: [45] (tổng 45), [2,4,6,7] (tổng 19), [1,3,5,6] (tổng 15).
Hiệu năng: Với ma trận lớn, dùng heapq.nlargest(k, my_list, key=sum) hiệu quả hơn (O(n log k) thay vì O(n log n)).