List Comprehension เป็นเทคนิคยอดนิยมใน Python ใช้เทคนิคนี้ สร้างอาร์เรย์อินพุต สมาชิกเป็น 0 และ 1 สลับกัน แล้วแยก 0 ไปซ้าย 1 ไปขวา วนลูปอาร์เรย์แยกสองลิสต์ หนึ่งเก็บ 0 อีกอันเก็บ 1 แล้วต่อกัน
ตัวอย่าง
Input:: a=[0,1,1,0,0,1] Output::[0,0,0,1,1,1]
อัลกอริทึม
seg0s1s(A) /* A คืออาร์เรย์อินพุต สมาชิกของ A ต้องเป็นการผสมของ 0 และ 1 */ ขั้นตอนที่ 1: วนลูปผ่านอาร์เรย์ ขั้นตอนที่ 2: ตรวจสอบสมาชิกทุกตัว ถ้าเป็น 0 วางซ้าย ถ้าเป็น 1 วางขวา ขั้นตอนที่ 3: ต่อสองลิสต์เข้าด้วยกัน
โค้ดตัวอย่าง
# แยก 0 และ 1 ในอาร์เรย์ลิสต์
def seg0s1s(A):
n = ([i for i in A if i == 0] + [i for i in A if i == 1])
print(n)
# โปรแกรมหลัก
if __name__ == "__main__":
A = list()
n = int(input("ป้อนขนาดของอาร์เรย์ ::"))
print("ป้อนตัวเลข ::")
for i in range(int(n)):
k = int(input(""))
A.append(int(k))
print("อาร์เรย์ลิสต์ใหม่ ::")
seg0s1s(A)
ผลลัพธ์
ป้อนขนาดของอาร์เรย์ ::6 ป้อนตัวเลข :: 1 0 0 1 1 0 อาร์เรย์ลิสต์ใหม่ :: [0, 0, 0, 1, 1, 1]