Khi cần xóa mọi lần xuất hiện của 'y' nằm trước 'x' trong list, ta dùng list comprehension và phương thức index().
Ví dụ
my_list = [4, 45, 75, 46, 66, 77, 48, 99, 10, 40, 5, 8]
print("Danh sách là:")
print(my_list)
a, b = 8, 4
index_a = my_list.index(a)
my_result = [ele for index, ele in enumerate(my_list) if ele != b or (ele == b and index > index_a)]
print("Danh sách kết quả:")
print(my_result)
Kết quả đầu ra
Danh sách là: [4, 45, 75, 46, 66, 77, 48, 99, 10, 40, 5, 8] Danh sách kết quả: [45, 75, 46, 66, 77, 48, 99, 10, 40, 5, 8]
Giải thích
- Tìm chỉ số của a=8 (
index_a = 11). - List comprehension duyệt với
enumerate. - Điều kiện giữ phần tử:
ele != b(khác 4) HOẶC(ele == b and index > index_a)(là 4 NHƯNG sau vị trí 8). - Phần tử 4 ở đầu (index 0) bị loại vì index 0 < 11.
Lưu ý: Chỉ xóa y trước lần xuất hiện đầu tiên của x. Các y sau x được giữ lại.