แนวคิด
กำหนดลิสต์ และค่า a, b ลบค่า b ทุกตัวที่อยู่ "ก่อน" ค่า a แรกที่เจอ (index น้อยกว่า) ค่า b ที่อยู่หลัง a คงไว้
ตัวอย่างโค้ด
my_list = [4, 45, 75, 46, 66, 77, 48, 99, 10, 40, 5, 8]
print("ลิสต์:", my_list)
a, b = 8, 4
index_a = my_list.index(a) # index ของ a แรก = 11
# list comprehension + enumerate
my_result = [
ele for index, ele in enumerate(my_list)
if ele != b or (ele == b and index > index_a)
]
print("ผลลัพธ์ (ลบ 4 ที่อยู่ก่อน 8):", my_result)
ผลลัพธ์
ลิสต์: [4, 45, 75, 46, 66, 77, 48, 99, 10, 40, 5, 8]
ผลลัพธ์ (ลบ 4 ที่อยู่ก่อน 8): [45, 75, 46, 66, 77, 48, 99, 10, 40, 5, 8]
คำอธิบายเงื่อนไข
if ele != b or (ele == b and index > index_a)
ele != b: เก็บทุกตัวที่ไม่ใช่ bele == b and index > index_a: เก็บ b เฉพาะที่อยู่หลัง a- รวมกันด้วย OR -> เก็บทุกตัว ยกเว้น b ที่อยู่ก่อนหรือที่ a
กรณี a ไม่อยู่ในลิสต์
try:
index_a = my_list.index(a)
except ValueError:
index_a = -1 # หรือ len(my_list) ตาม logic
# ถ้า a ไม่อยู่ -> index_a = -1 -> index > -1 จริงทุกตัว -> ไม่ลบอะไร