ลบ 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]
สรุปการเลือกใช้
| Method | Use Case | Returns | Raises Error If |
|---|---|---|---|
| pop(i) | ลบตาม Index, ต้องการค่าที่ลบ | Removed value | Index out of range |
| remove(v) | ลบตามค่า (ตัวแรก) | None | Value not found |
| del lst[i:j] | ลบช่วง/หลายตัวพร้อมกัน | None | Index out of range |
| clear() | ลบทั้ง List | None | Never |
| List Comp | กรอง/Transform | New List | Never |
หมายเหตุสำคัญ
- Mutable: List เปลี่ยนแปลงได้ In-place (ยกเว้น List Comprehension ที่สร้าง List ใหม่)
- Index Error: ตรวจสอบ Index ก่อน pop/del
- Iterating while removing: อย่า Remove ขณะ Loop ผ่าน List เดียวกัน → ใช้ List Comprehension หรือ Loop ย้อนหลัง