เรียงลิสต์ของลิสต์ (Matrix) โดยใช้ Key เป็น Maximum Sum ของ Subarray ความยาว K ในแต่ละ Row
ตัวอย่างโค้ด
def sort_matrix_K(my_list):
return max(sum(my_list[index: index + K]) for index in range(len(my_list) - K))
my_list = [[51, 23, 4, 24, 1], [45, 6, 26, 36, 5], [56, 16, 6, 36, 8], [5, 4, 36, 26, 26]]
print("The list is :")
print(my_list)
K = 4
print("The value of K is ")
print(K)
my_list.sort(key=sort_matrix_K)
print("The resultant list is :")
print(my_list)
ผลลัพธ์
The list is : [[51, 23, 4, 24, 1], [45, 6, 26, 36, 5], [56, 16, 6, 36, 8], [5, 4, 36, 26, 26]]
The value of K is 4
The resultant list is : [[5, 4, 36, 26, 26], [51, 23, 4, 24, 1], [45, 6, 26, 36, 5], [56, 16, 6, 36, 8]]
คำอธิบาย
- ฟังก์ชัน
sort_matrix_Kคำนวณ Max Sum ของ Subarray ขนาด K sum(my_list[i:i+K])ผลรวม Subarray เริ่ม i ความยาว Kmax(... for i in range(len-K))หาค่าสูงสุดของ Subarray ทั้งหมดใน Rowlist.sort(key=func)เรียงตามค่าที่ฟังก์ชันคืน (น้อยไปมาก)- Row [5,4,36,26,26]: Subarray size 4 -> [5,4,36,26]=71, [4,36,26,26]=92 -> Max=92 (น้อยสุด)