Loại bỏ trùng lặp mảng Python

Lọc các mục trùng lặp từ danh sách Python trong khi vẫn giữ nguyên thứ tự chèn ban đầu của chúng.

Thử trong Trình chỉnh sửa

Tổng quan

Loại bỏ các bản sao là một trong những thao tác dọn dẹp dữ liệu phổ biến nhất trong phần mềm.

Truyền một danh sách tới một tập hợp (`set(arr)`) sẽ loại bỏ các bản sao nhưng phá hủy thứ tự của các phần tử vì các tập hợp không có thứ tự.

Để loại bỏ các bản sao trong khi vẫn giữ nguyên thứ tự, chúng tôi lặp qua danh sách và theo dõi các phần tử đã thấy trong một tập hợp, thêm các phần tử mới vào danh sách kết quả.

Đầu ra mã & thực thi

Bộ tích lũy các phần tử duy nhất bảo toàn trật tự O(n) hiệu quả.

def remove_duplicates(arr):
    seen = set()
    result = []
    for item in arr:
        if item not in seen:
            seen.add(item)
            result.append(item)
    return result

sample_list = [1, 2, 2, 3, 4, 4, 1, 5]
print("Original:", sample_list)
print("Unique:  ", remove_duplicates(sample_list))
Đầu ra thiết bị đầu cuối
Original: [1, 2, 2, 3, 4, 4, 1, 5]
Unique:   [1, 2, 3, 4, 5]

Triển khai từng bước

  • Vệ sinh lịch sử tìm kiếm và nhật ký hồ sơ giao dịch
  • Chuẩn bị danh sách khóa dữ liệu duy nhất cho truy vấn SQL
  • Làm sạch mảng để lập bản đồ trực quan

Câu hỏi thường gặp

Cách nhanh nhất để thực hiện việc này trongPython 3.7+ là gì?

VìPython 3.7+ giữ nguyên thứ tự chèn từ điển, nên bạn có thể chạy `list(dict.fromkeys(arr))` để xóa các bản sao trong khi vẫn duy trì thứ tự trong một bước tối ưu hóa duy nhất.

Chủ đề liên quan