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

Python – Sắp xếp theo bao hàm phạm vi


Khi cần sắp xếp danh sách dựa trên tổng khoảng cách của các cặp số nằm trong một phạm vi cho trước, ta sử dụng hàm abs(), sum() và list comprehension bên trong một hàm tùy chỉnh.

Ví dụ

def sum_range_incl(my_row):
    return sum([abs(element[1] - element[0]) for element in my_row if element[0] > i and element[0] < j and element[1] > i and element[1] < j])

my_list = [[(12, 4), (55, 10), (11, 16)], [(42, 14)], [(2, 5), (2, 28), (9, 16)], [(12, 6), (6, 13)]]
print("Danh sách ban đầu:")
print(my_list)
i, j = 2, 15
my_list.sort(key=sum_range_incl)
print("Danh sách sau khi sắp xếp:")
print(my_list)

Kết quả

Danh sách ban đầu: [[(12, 4), (55, 10), (11, 16)], [(42, 14)], [(2, 5), (2, 28), (9, 16)], [(12, 6), (6, 13)]]
Danh sách sau khi sắp xếp: [[(42, 14)], [(2, 5), (2, 28), (9, 16)], [(12, 4), (55, 10), (11, 16)], [(12, 6), (6, 13)]]

Giải thích

  • Hàm sum_range_incl tính tổng hiệu tuyệt đối của các cặp số (element[1] - element[0]) chỉ khi cả hai giá trị đều nằm trong khoảng (i, j).

  • Danh sách được sắp xếp tăng dần theo giá trị tổng này.