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

Python - Sắp xếp ma trận theo tổng lớn nhất của mảng con kích thước K


Sắp xếp các hàng của ma trận (list of lists) dựa trên tổng lớn nhất của các mảng con (subarray) liên tiếp có kích thước K trong mỗi hàng. Sử dụng max() và sum() trong hàm key của sort().

Ví dụ

Minh họa:

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("Ma trận:", my_list)
K = 4
print("K =", K)
my_list.sort(key=sort_matrix_K)
print("Ma trận sau sắp xếp:", my_list)

Kết quả

Ma trận: [[51, 23, 4, 24, 1], [45, 6, 26, 36, 5], [56, 16, 6, 36, 8], [5, 4, 36, 26, 26]]
K = 4
Ma trận sau sắp xếp: [[5, 4, 36, 26, 26], [51, 23, 4, 24, 1], [45, 6, 26, 36, 5], [56, 16, 6, 36, 8]]

Giải thích

  • Hàm sort_matrix_K nhận một hàng (list), tính tổng của mọi mảng con độ dài K, trả về tổng lớn nhất.
  • Dùng hàm này làm key cho list.sort() để sắp xếp các hàng theo giá trị key tăng dần.