Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python – Loại bỏ phần tử cách nhau ít hơn K trong danh sách

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 index khi 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.