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

การแบ่งอาร์เรย์ 3 ส่วนตามช่วงที่กำหนดใน Python

ได้รับอาร์เรย์และช่วงของอาร์เรย์ [startval, endval] อาร์เรย์ถูกแบ่งเป็นสามส่วน:

  • องค์ประกอบทั้งหมดที่น้อยกว่า startval อยู่ก่อน
  • องค์ประกอบทั้งหมดในช่วง startval ถึง endval อยู่ถัดไป
  • องค์ประกอบทั้งหมดที่มากกว่า endval อยู่ท้ายสุด

ตัวอย่าง

Input: A = [1, 14, 51, 12, 4, 2, 54, 20, 87, 98, 3, 1, 32]
startval = 14, endval = 54
Output: A = [1, 12, 4, 2, 3, 1, 14, 51, 20, 32, 54, 87, 98]

อัลกอริทึม

Step1: แบ่งลิสต์เป็นสามส่วน ส่วนแรกมีองค์ประกอบน้อยกว่า startval ส่วนที่สองมีองค์ประกอบระหว่าง startval และ endval ส่วนที่สามมีองค์ประกอบมากกว่า endval
Step2: ต่อทั้งสามส่วนเข้าด้วยกัน

ตัวอย่างโค้ด

def partition_array(input, lowVal, highVal):
    # แยก input list เป็นสามส่วน
    my_first = [num for num in input if num < lowVal]
    my_second = [num for num in input if (num >= lowVal and num <= highVal)]
    my_third = [num for num in input if num > highVal]
    # ต่อทั้งสามส่วน
    print(my_first + my_second + my_third)

# Driver program
if __name__ == "__main__":
    my_input = [10, 140, 50, 200, 40, 20, 540, 200, 870, 980, 30, 10, 320]
    my_lowVal = 140
    my_highVal = 200
    partition_array(my_input, my_lowVal, my_highVal)

ผลลัพธ์

[10, 50, 40, 20, 30, 10, 140, 200, 200, 540, 870, 980, 320]