เมื่อต้องการเรียงลำดับรายการตามช่วง จะใช้เมธอด abs(), sum() และ List Comprehension ภายในฟังก์ชัน
ตัวอย่าง
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("The list is :")
print(my_list)
i, j = 2, 15
my_list.sort(key=sum_range_incl)
print("The resultant list is :")
print(my_list)
ผลลัพธ์
The list is : [[(12, 4), (55, 10), (11, 16)], [(42, 14)], [(2, 5), (2, 28), (9, 16)], [(12, 6), (6, 13)]] The resultant list is : [[(42, 14)], [(2, 5), (2, 28), (9, 16)], [(12, 4), (55, 10), (11, 16)], [(12, 6), (6, 13)]]
คำอธิบาย
นิยามฟังก์ชัน
sum_range_inclที่รับรายการของ Tuple เป็นพารามิเตอร์วนลูปผ่านรายการด้วย List Comprehension
คำนวณความต่างสัมบูรณ์ระหว่างสมาชิกที่ 0 และ 1 ของแต่ละ Tuple โดยที่ทั้งคู่ต้องอยู่ในช่วง i ถึง j
คืนค่าผลรวมของความต่างเหล่านั้น
กำหนดรายการของรายการ Tuple และแสดงผล
กำหนดค่าจำนวนเต็ม i และ j
เรียงลำดับรายการด้วยเมธอด
sort()โดยส่งฟังก์ชันที่นิยามไว้เป็น keyแสดงผลลัพธ์บนคอนโซล