Bộ Python: Hoạt động, Phương thức & Lý thuyết tập hợp
Bộ chính bằng Python. Tìm hiểu cách lưu trữ các giá trị duy nhất, thực hiện giao điểm, hợp nhất, khác biệt và hiểu lợi ích hiệu suất của việc băm.
Tổng quan
Tập hợp là một tập hợp không có thứ tự các phần tử duy nhất trong Python. Các bộ được xây dựng trên các bảng băm, giúp chúng được tối ưu hóa cao cho việc kiểm tra tư cách thành viên—xác định xem một phần tử cụ thể có nằm trong bộ sưu tập hay không. Trong khi kiểm tra xem một mục có trong danh sách hay không yêu cầu quét mọi mục (thao tác `O(N)`), việc kiểm tra tư cách thành viên trong một tập hợp sẽ chạy trong thời gian không đổi `O(1)`. Điều này làm cho các bộ trở nên vô cùng mạnh mẽ trong việc loại bỏ trùng lặp và lọc dữ liệu hàng loạt.
Các tập hợp được khởi tạo bằng cách sử dụng dấu ngoặc nhọn `{}` chứa các giá trị (không có dấu hai chấm) hoặc bằng cách sử dụng hàm tạo `set()` tích hợp. Lưu ý rằng vì dấu ngoặc nhọn cũng được sử dụng cho từ điển, nên việc viết dấu ngoặc nhọn trống `{}` sẽ khởi tạo một từ điển trống. Để khởi tạo một tập hợp trống, bạn phải sử dụng `set()`. Các phần tử bên trong một tập hợp phải có thể băm được và không thể thay đổi, nghĩa là bạn có thể lưu trữ số, chuỗi và bộ dữ liệu, nhưng bạn không thể lưu trữ danh sách hoặc từ điển bên trong một tập hợp.
Ngoài các phương pháp cộng và xóa cơ bản, Python còn hỗ trợ các phép toán từ Lý thuyết tập hợp toán học. Điều này bao gồm Union (`|` hoặc `.union()`) để hợp nhất các bộ sưu tập, Giao lộ (`&` hoặc `.intersection()`) để tìm các phần tử chung, Sự khác biệt (`-` hoặc `.difference()`) để tìm các phần tử duy nhất cho một bộ sưu tập và Sự khác biệt đối xứng (`^`) để truy xuất các mục trong một trong hai bộ chứ không phải cả hai. Các bộ làm chủ cho phép bạn giải quyết các vấn đề nhóm phức tạp bằng mã rõ ràng, hiệu quả và dễ đọc.
Đầu ra mã & thực thi
Loại bỏ các bản sao khỏi danh sách và thực hiện các phép toán tập hợp toán học.
# Removing duplicates
roles_list = ["admin", "user", "editor", "admin", "user"]
# Sort the set to guarantee deterministic printed output
unique_roles = sorted(list(set(roles_list)))
print(f"Unique roles: {unique_roles}")
# Set operations
dev_skills = {"python", "javascript", "sql"}
ops_skills = {"sql", "docker", "kubernetes"}
# Union and Intersection (sorted for deterministic output)
all_skills = sorted(list(dev_skills | ops_skills))
common_skills = sorted(list(dev_skills & ops_skills))
unique_to_dev = sorted(list(dev_skills - ops_skills))
print(f"Union: {all_skills}")
print(f"Intersection: {common_skills}")
print(f"Dev only: {unique_to_dev}")Unique roles: ['admin', 'editor', 'user']
Union: ['docker', 'javascript', 'kubernetes', 'python', 'sql']
Intersection: ['sql']
Dev only: ['javascript', 'python']Triển khai từng bước
- Xóa các mục trùng lặp khỏi kết quả API hoặc tệp CSV
- Xác định các phần tử chung giữa hai cơ sở dữ liệu
- Thực hiện thao tác tra cứu nhanh trên danh sách ID lớn
Câu hỏi thường gặp
Các phần tử trong một tập hợp có được sắp xếp theo thứ tự không?
Không, các bộ không có thứ tự. Bạn không thể truy cập các phần tử theo chỉ mục (như set[0]) hoặc cắt chúng.
Làm cách nào để thêm hoặc xóa phần tử trong một tập hợp?
Sử dụng phương thức .add() để chèn một phần tử và .remove() hoặc .discard() để xóa một phần tử. .discard() an toàn hơn vì nó không gây ra lỗi nếu thiếu phần tử.
Chủ đề liên quan
Tìm hiểu mọi thứ về danh sách Python. Khám phá cách tạo, cắt, sửa đổi và lặp qua các mảng trong Python nguyên bản.
Từ điển PythonLàm chủ từ điển Python. Tìm hiểu cách lưu trữ, tìm nạp và xử lý dữ liệu cặp khóa-giá trị. Hiểu hiệu suất và các phương pháp hay nhất để ánh xạ.
Bộ dữ liệu PythonHiểu các bộ dữ liệu Python. Tìm hiểu thời điểm sử dụng bộ dữ liệu trong danh sách, cách giải nén bộ dữ liệu hoạt động và tính bất biến đảm bảo an toàn dữ liệu như thế nào.
Tài nguyên Python được đề xuất
Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.
Cách sắp xếp danh sách trong Python
Tìm hiểu cách sắp xếp danh sách trong Python bằng phương thức Sort() và hàm Sort(). Khám phá các ví dụ về sắp xếp khóa tùy chỉnh và thứ tự đảo ngược.
Bảng cheat phương thức chuỗi Python
Hướng dẫn tham khảo đầy đủ về thao tác chuỗi Python. Làm chủ định dạng, tìm kiếm, phân tách, thay thế và kiểm tra thuộc tính chuỗi.
Python vs JavaScript: Ngôn ngữ lập trình nào tốt nhất?
So sánh toàn diện giữa Python và JavaScript. Khám phá sự khác biệt về cú pháp, hiệu suất, trường hợp sử dụng (phụ trợ so với giao diện người dùng) và các ví dụ về mã hóa.