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

วิธีลบ Element ออกจาก List ใน Python

ลบ Element ออกจาก List ใน Python

List ใน Python เป็น Linear Data Structure เก็บ Element ใน Memory ติดกัน เข้าถึงด้วย Index มี Built-in Methods หลายอย่างสำหรับลบ Element

1. pop(index) - ลบตาม Index

ลบ Element ที่ Index ที่ระบุ และคืนค่า Element ที่ลบ

lst = [1, 2, 3, 4, 5]
removed = lst.pop(2)  # ลบ Index 2 (ค่า 3)
print(lst)      # [1, 2, 4, 5]
print(removed)  # 3

# pop() โดยไม่ระบุ Index = ลบตัวสุดท้าย
last = lst.pop()
print(last)  # 5
print(lst)   # [1, 2, 4]

2. remove(value) - ลบตามค่า (ครั้งแรกที่เจอ)

ลบ Element แรกที่มีค่าตรงกับ Argument

lst = [1, 2, 3, 2, 4, 5]
lst.remove(2)  # ลบ 2 ตัวแรก (Index 1)
print(lst)  # [1, 3, 2, 4, 5]

# Error handling
try:
    lst.remove(99)  # ไม่มีใน List
except ValueError:
    print("Value not found")

3. del list[start:end] - ลบช่วง (Slice)

ลบ Elements จาก Index start (รวม) ถึง end (ไม่รวม)

lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del lst[2:5]  # ลบ Index 2,3,4 (ค่า 2,3,4)
print(lst)  # [0, 1, 5, 6, 7, 8, 9]

# ลบตัวเดียว
del lst[0]
print(lst)  # [1, 5, 6, 7, 8, 9]

# ลบทั้ง List (แต่ Variable ยังคงอยู่)
del lst[:]
print(lst)  # []

4. clear() - ลบทั้งหมด

ลบ Elements ทั้งหมด ทำให้ List ว่าง

lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
lst.clear()
print(lst)  # []

5. List Comprehension - กรอง Element ที่ต้องการเก็บ

lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# เก็บเฉพาะเลขคู่
lst = [x for x in lst if x % 2 == 0]
print(lst)  # [2, 4, 6, 8]

# ลบค่าเฉพาะ (เก็บทุกตัวยกเว้น 3, 5)
lst = [1, 2, 3, 4, 5, 6]
lst = [x for x in lst if x not in (3, 5)]
print(lst)  # [1, 2, 4, 6]

สรุปการเลือกใช้

MethodUse CaseReturnsRaises Error If
pop(i)ลบตาม Index, ต้องการค่าที่ลบRemoved valueIndex out of range
remove(v)ลบตามค่า (ตัวแรก)NoneValue not found
del lst[i:j]ลบช่วง/หลายตัวพร้อมกันNoneIndex out of range
clear()ลบทั้ง ListNoneNever
List Compกรอง/TransformNew ListNever

หมายเหตุสำคัญ

  • Mutable: List เปลี่ยนแปลงได้ In-place (ยกเว้น List Comprehension ที่สร้าง List ใหม่)
  • Index Error: ตรวจสอบ Index ก่อน pop/del
  • Iterating while removing: อย่า Remove ขณะ Loop ผ่าน List เดียวกัน → ใช้ List Comprehension หรือ Loop ย้อนหลัง