แนวคิด
จาก matrix ให้หา K แถวที่มีผลรวม (sum) ของสมาชิกมากที่สุด ใช้ sorted() พร้อม key=lambda row: sum(row) และ reverse=True
ตัวอย่างโค้ด
my_list = [[2, 4, 6, 7], [2, 4, 8], [45], [1, 3, 5, 6], [8, 2, 1]]
print("Matrix:", my_list)
my_key = 3
print("K =", my_key)
# เรียงจากผลรวมมากไปน้อย แล้ว取 K แถวแรก
my_result = sorted(my_list, key=lambda row: sum(row), reverse=True)[:my_key]
print(f"{my_key} แถวที่ sum มากที่สุด:", my_result)
ผลลัพธ์
Matrix: [[2, 4, 6, 7], [2, 4, 8], [45], [1, 3, 5, 6], [8, 2, 1]]
K = 3
3 แถวที่ sum มากที่สุด: [[45], [2, 4, 6, 7], [1, 3, 5, 6]]
คำอธิบาย
sum(row)คำนวณผลรวมแต่ละแถวkey=lambda row: sum(row)ใช้ผลรวมเป็นเกณฑ์การเรียงreverse=Trueเรียงมากไปน้อย[:my_key]ตัด K แถวแรก
ประสิทธิภาพ
เวลา O(n log n) จากการเรียง ถ้า K ≪ n ใช้ heapq.nlargest(K, my_list, key=sum) ได้ O(n log K) เร็วกว่า
import heapq
result = heapq.nlargest(my_key, my_list, key=sum)