หากต้องการลบองค์ประกอบออกจากรายการ (อาร์เรย์) ของรายการประเภทใน Python ให้ใช้วิธีการรายการ clear(), pop() และ remove() คุณยังสามารถระบุตำแหน่งและช่วงของรายการโดยใช้ดัชนีหรือสไลซ์ แล้วลบออกโดยใช้คำสั่ง del
ข้อมูลต่อไปนี้มีให้ที่นี่
- ลบองค์ประกอบทั้งหมด:
clear()
- ลบองค์ประกอบในตำแหน่งที่ระบุและรับค่าของมัน:
pop()
- ค้นหาองค์ประกอบที่มีค่าที่ระบุและลบองค์ประกอบแรก:
remove()
- การลบโดยระบุตำแหน่งและช่วงในส่วนดัชนี:
del
- แบทช์ลบองค์ประกอบหลายรายการที่ตรงตามเกณฑ์:รายการบ่งชี้การรวม
โปรดทราบว่ารายการสามารถจัดเก็บข้อมูลประเภทต่างๆ และแตกต่างจากอาร์เรย์โดยสิ้นเชิง ใช้อาร์เรย์ (ไลบรารีมาตรฐาน) หรือ NumPy เมื่อคุณต้องการจัดการอาร์เรย์สำหรับกระบวนการที่ต้องการขนาดหน่วยความจำหรือที่อยู่หน่วยความจำ หรือสำหรับการคำนวณตัวเลขของข้อมูลขนาดใหญ่
ลบองค์ประกอบทั้งหมด:clear()
ในวิธีการรายการ clear() องค์ประกอบทั้งหมดจะถูกลบออก ส่งผลให้รายการว่างเปล่า
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
ลบองค์ประกอบในตำแหน่งที่ระบุและรับค่าของมัน:pop()
วิธี pop() ของรายการสามารถใช้เพื่อลบองค์ประกอบในตำแหน่งที่ระบุและรับค่าขององค์ประกอบนั้น
หมายเลขแรก (เริ่มต้น) คือ 0
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(0))
# 0
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(3))
# 4
print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]
ค่าลบยังสามารถใช้เพื่อระบุตำแหน่งจากจุดสิ้นสุด (สุดท้าย) จุดสิ้นสุด (สุดท้าย) คือ -1
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
หากละเว้นอาร์กิวเมนต์และไม่ได้ระบุตำแหน่งไว้ องค์ประกอบที่ส่วนท้าย (สุดท้าย) จะถูกลบออก
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
การระบุตำแหน่งที่ไม่มีอยู่จะส่งผลให้เกิดข้อผิดพลาด
# print(l.pop(100))
# IndexError: pop index out of range
โปรดทราบว่า pop(0) ซึ่งลบองค์ประกอบแรก ต้องการค่าใช้จ่ายต่อไปนี้ และไม่ใช่การดำเนินการที่มีประสิทธิภาพ ดูหน้าต่อไปนี้บนวิกิอย่างเป็นทางการสำหรับความซับซ้อนในการคำนวณของการดำเนินการต่างๆ ในรายการO(n)
O(1)
ประเภท deque มีอยู่ในโมดูลคอลเลกชันไลบรารีมาตรฐานเป็นประเภทที่จะลบองค์ประกอบไปด้านบนด้วยค่าใช้จ่ายนี้ ตัวอย่างเช่น หากคุณต้องการจัดการข้อมูลแบบคิว (FIFO) การใช้ deque จะมีประสิทธิภาพมากกว่า
ค้นหาองค์ประกอบที่มีค่าที่ระบุและลบองค์ประกอบแรก:remove()
list method remove() สามารถใช้เพื่อค้นหาองค์ประกอบที่มีค่าเดียวกับที่ระบุและลบองค์ประกอบแรก
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
หากรายการมีองค์ประกอบมากกว่าหนึ่งรายการที่ตรงกับค่าที่ระบุ ระบบจะลบเฉพาะองค์ประกอบแรกเท่านั้น
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
หากระบุค่าที่ไม่มีอยู่ จะเกิดข้อผิดพลาดขึ้น
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
การลบโดยระบุตำแหน่งและช่วงในส่วนดัชนี:del
คุณยังสามารถใช้คำสั่ง del เพื่อลบองค์ประกอบออกจากรายการ
ระบุองค์ประกอบที่จะลบโดยดัชนี ดัชนีแรก (เริ่มต้น) คือ 0 และดัชนีสุดท้าย (สุดท้าย) คือ -1
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]
del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]
หากคุณระบุช่วงด้วยการแบ่งส่วน คุณสามารถลบองค์ประกอบหลายรายการพร้อมกันได้
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]
l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]
l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]
l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]
นอกจากนี้ยังสามารถระบุช่วงทั้งหมดและลบองค์ประกอบทั้งหมดได้
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
หากคุณระบุช่วงในสไลซ์ด้วยวิธีนี้และระบุขั้นตอนที่เพิ่มขึ้น คุณสามารถลบองค์ประกอบการกระโดดหลายรายการพร้อมกันได้
l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]
l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการหั่น ให้ดูบทความต่อไปนี้
แบทช์ลบองค์ประกอบหลายรายการที่ตรงตามเกณฑ์:รายการบ่งชี้การรวม
กระบวนการกำจัดองค์ประกอบที่ตรงตามเงื่อนไขนั้นเทียบเท่ากับกระบวนการออกจากองค์ประกอบ (การแยก) ที่ไม่เป็นไปตามเงื่อนไข สัญกรณ์ความเข้าใจรายการใช้สำหรับการประมวลผลประเภทนี้
- บทความที่เกี่ยวข้อง:การใช้สัญกรณ์ความเข้าใจรายการ Python
ตัวอย่างของการลบองค์ประกอบคี่หรือคู่ (= ออกจากองค์ประกอบคู่หรือคี่) แสดงอยู่ด้านล่าง%
นี่คือตัวดำเนินการที่เหลือi % 2
นี่คือเศษเหลือของ i หารด้วย 2
ในสัญกรณ์ความเข้าใจรายการ รายการใหม่จะถูกสร้างขึ้น ต่างจากวิธีประเภทรายการที่แนะนำจนถึงตอนนี้ รายการดั้งเดิมยังคงไม่เปลี่ยนแปลง
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]
print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
ตัวอย่างอื่นๆ สามารถประมวลผลได้หลากหลายขึ้นอยู่กับนิพจน์เงื่อนไข
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']
print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']
หากคุณต้องการลบองค์ประกอบที่ซ้ำกัน ให้ใช้ประเภทชุด
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']