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

Python – เรียงลำดับตามการรวมช่วง


เมื่อต้องการเรียงลำดับรายการตามช่วง จะใช้เมธอด 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

  • แสดงผลลัพธ์บนคอนโซล