Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python in N hàng có tổng lớn nhất

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)).