Cho L1 (list gốc) và L2 (list index cần xóa).
>>> L1 = [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> L2 = [2, 4, 6]
Giải pháp: enumerate + delete
>>> e = enumerate(L1) >>> for i, j in e: ... if i in L2: ... del L1[i] >>> L1 [1, 2, 4, 5, 7, 8]
Vấn đề: Xóa trong khi iterate list đang thay đổi index → kết quả sai nếu xóa nhiều index liên tiếp. Cách tốt hơn:
Cách an toàn: Tạo list mới (filter)
L1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
L2 = {2, 4, 6} # Dùng set để O(1) lookup
L1 = [val for idx, val in enumerate(L1) if idx not in L2]
print(L1) # [1, 2, 4, 5, 7, 8]
Cách khác: Xóa từ cuối lên đầu
for i in sorted(L2, reverse=True):
del L1[i]