Khi cần xóa phần tử tại các chỉ số cụ thể từ list, ta dùng enumerate, toán tử not in, vòng lặp và append().
Ví dụ
my_list = [91, 75, 15, 45, 69, 78, 23, 71, 36, 72]
print("Danh sách gốc:")
print(my_list)
print("Danh sách sau sắp xếp:")
my_list.sort()
print(my_list)
index_list = [2, 4, 5, 7]
print("Các chỉ số cần xóa:", index_list)
my_result = []
for index, element in enumerate(my_list):
if index not in index_list:
my_result.append(element)
print("Danh sách kết quả:")
print(my_result)
print("Kết quả sau sắp xếp:")
my_result.sort()
print(my_result)
Kết quả đầu ra
Danh sách gốc: [91, 75, 15, 45, 69, 78, 23, 71, 36, 72] Danh sách sau sắp xếp: [15, 23, 36, 45, 69, 71, 72, 75, 78, 91] Các chỉ số cần xóa: [2, 4, 5, 7] Danh sách kết quả: [15, 23, 45, 72, 78, 91] Danh sách kết quả sau sắp xếp: [15, 23, 45, 72, 78, 91]
Giải thích
- Sắp xếp list trước (tùy chọn).
- Duyệt với
enumerate, nếu index không trong index_list → giữ lại. - Chỉ số bị xóa: 2(36), 4(69), 5(71), 7(75) → giữ: 15,23,45,72,78,91.
Cách viết gọn:
my_result = [v for i, v in enumerate(my_list) if i not in index_list]
Lưu ý: index_list nên là set để tra cứu O(1): index_set = set(index_list).