Xóa các phần tử trong danh sách đã sắp xếp nếu khoảng cách giữa chúng nhỏ hơn K. Sử dụng vòng lặp while và del.
Mã nguồn
my_list = [13, 29, 24, 18, 40, 15]
print("Danh sách gốc:", my_list)
K = 3
my_list = sorted(my_list)
print("Đã sắp xếp:", my_list)
index = 0
while index < len(my_list) - 1:
if my_list[index] + K > my_list[index + 1]:
del my_list[index + 1]
else:
index += 1
print("Kết quả (khoảng cách >= K):", my_list)
Kết quả
Danh sách gốc: [13, 29, 24, 18, 40, 15] Đã sắp xếp: [13, 15, 18, 24, 29, 40] Kết quả (khoảng cách >= 3): [13, 18, 24, 29, 40]
Giải thích
- Sắp xếp danh sách trước: [13, 15, 18, 24, 29, 40].
- Duyệt với
index, so sánh phần tử hiện tại và kế tiếp. - Nếu
current + K > next(khoảng cách < K) → xóa phần tử kế tiếp (del my_list[index+1]). - Không tăng
indexkhi xóa (vì phần tử sau trượt lên vị tríindex+1). - Kết quả: 13, 18 (khoảng 5), 24 (6), 29 (5), 40 (11) – tất cả ≥ 3.
Lưu ý
Xóa phần tử trong list khi đang duyệt cần cẩn thận; cách này đúng vì không tăng index khi xóa. Kết quả phụ thuộc vào thứ tự sắp xếp.