Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python - เรียง Matrix ตาม Max Sum ของ Subarray ขนาด K

เรียงลิสต์ของลิสต์ (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 ความยาว K
  • max(... for i in range(len-K)) หาค่าสูงสุดของ Subarray ทั้งหมดใน Row
  • list.sort(key=func) เรียงตามค่าที่ฟังก์ชันคืน (น้อยไปมาก)
  • Row [5,4,36,26,26]: Subarray size 4 -> [5,4,36,26]=71, [4,36,26,26]=92 -> Max=92 (น้อยสุด)