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

ลบค่า y ทุกตัวที่อยู่ก่อน x ในลิสต์

แนวคิด

กำหนดลิสต์ และค่า 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: เก็บทุกตัวที่ไม่ใช่ b
  • ele == 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 จริงทุกตัว -> ไม่ลบอะไร