Trong Python, set
là một cấu trúc dữ liệu cơ bản mô phỏng khái niệm toán học về tập hợp. Được biểu diễn bởi một tập hợp các phần tử duy nhất và không theo thứ tự, set
được sử dụng rộng rãi để thực hiện các hoạt động như kiểm tra sự tồn tại của phần tử, loại bỏ các phần tử trùng lặp từ một chuỗi hoặc danh sách, và thực hiện các phép toán toán học như giao, hợp, và hiệu của tập hợp. Khả năng tự động loại bỏ các phần tử trùng lặp khiến set
trở thành một công cụ quý giá trong việc xử lý dữ liệu và giải quyết các vấn đề liên quan đến tập hợp một cách hiệu quả và trực quan. Sự linh hoạt và hiệu suất của set
trong Python làm cho nó trở thành một phần không thể thiếu trong bộ công cụ của lập trình viên khi làm việc với dữ liệu phức tạp và cần được làm sạch hoặc tổ chức.
Ví dụ về Set
var = {"set1", "set2", "set3"} type(var)
set
# chuyển từ list sang set myset = set(["a", "b", "c"]) print(myset) # thêm element vào set myset.add("d") print(myset)
Set Cố định
Các set cố định trong Python là các đối tượng bất biến, chỉ hỗ trợ các phương thức và toán tử tạo ra kết quả mà không ảnh hưởng đến set cố định hoặc các set mà chúng được áp dụng. Nó có thể được thực hiện với phương thức freezeset() trong Python.
Mặc dù các phần tử của một set có thể được sửa đổi bất kỳ lúc nào, nhưng các phần tử của set cố định vẫn giữ nguyên sau khi tạo.
Nếu không có tham số nào được truyền, nó sẽ trả về một tập hợp đóng băng.
# khai báo tập hợp {"a", "b","c"} normal_set = set(["a", "b","c"]) print("tập hợp") print(normal_set) # tập hợp cố định frozen_set = frozenset(["e", "f", "g"]) print("\n tập hợp frozenset") print(frozen_set)
Cách hoạt động của Set
Điều này dựa trên cấu trúc dữ liệu được gọi là bảng băm.
Nếu Nhiều giá trị xuất hiện ở cùng một vị trí chỉ mục, thì giá trị đó sẽ được thêm vào vị trí chỉ mục đó để tạo thành list được Liên kết. Trong, Bộ Python được triển khai bằng cách sử dụng từ điển với các biến giả, trong đó các sinh vật chính mà các thành viên đặt với mức độ tối ưu hóa cao hơn đối với độ phức tạp về thời gian.
Đặt triển khai:
Đặt với nhiều hoạt động trên một HashTable duy nhất:
Phương thức cho Sets
Thêm phần tử vào Python Sets
Việc chèn vào set được thực hiện thông qua hàm set.add(), trong đó một giá trị bản ghi thích hợp được tạo để lưu trữ trong bảng băm. Giống như kiểm tra một mục, tức là trung bình O(1). Tuy nhiên, trong trường hợp xấu nhất, nó có thể trở thành O(n).
#tạo tập hợp people = {"people1", "people2", "people3"} print("People:", end = " ") print(people) #thêm vào tập hợp people.add("people4") #duyệt từng phần tử sử dụng range for i in range(1, 6): people.add(i) print("\ntập hợp sau khi thêm element:", end = " ") print(people)
Hợp trên Set Python
Hai set có thể được hợp nhất bằng hàm union() hoặc toán tử |. Cả hai giá trị Bảng băm đều được truy cập và duyệt qua với thao tác hợp nhất được thực hiện trên chúng để kết hợp các phần tử, đồng thời loại bỏ các phần tử trùng lặp. Độ phức tạp thời gian của điều này là O(len(s1) + len(s2)) trong đó s1 và s2 là hai set cần thực hiện phép hợp.
people = {"people1", "people2", "people3"} vampires = {"vampires1", "vampires2"} dracula = {"dracula1", "dracula2"} # hợp sử dụng union() population = people.union(vampires) print("hợp tập hợp sử dụng union()") print(population) #hợp sử dụng toán tử Ư population = people|dracula print("\nhợp tập hợp sử dụng |") print(population)
Giao trên Set
Điều này có thể được thực hiện thông qua toán tử Intersection () hoặc &. Các phần tử chung được chọn. Chúng tương tự như việc lặp lại các list Hash và kết hợp các giá trị giống nhau trên cả hai Bảng. Độ phức tạp về thời gian của điều này là O(min(len(s1), len(s2)) trong đó s1 và s2 là hai set cần thực hiện phép hợp.
#tạo 2 tập hợp set1 = set() set2 = set() #sử dụng range 5 for i in range(5): set1.add(i) #sử dụng range 3 đến 9 for i in range(3,9): set2.add(i) # sử dụng toán tử giao set3 = set1.intersection(set2) print("giao tập hợp sử dụng intersection()") print(set3) #Giao tập hợp sử dụng & set3 = set1 & set2 print("\niao tập hợp sử dụng '&'") print(set3)
Tìm phần tử khác của các set trong Python
Để tìm sự khác biệt giữa các set. Tương tự như tìm sự khác biệt trong list liên kết. Điều này được thực hiện thông qua toán tử Difference() hoặc –. Độ phức tạp thời gian của việc tìm hiệu s1 – s2 là O(len(s1))
#tạo 2 tập hợp set1 = set() set2 = set() #chạy range 5 for i in range(5): set1.add(i) #chạy ranger 3 đến 9 for i in range(3,9): set2.add(i) #sử dụng phương thức difference set3 = set1.difference(set2) print("phần tử khác sử dụng difference()") print(set3) #sử dụng toán tử - set3 = set1 - set2 print("\nphần tử khác sử dụng '-'") print(set3)
Xóa Set
Phương thức Set Clear() làm trống toàn bộ tập hợp.
#khai báo tập hợp set1 = {1,2,3,4,5,6} print("set ban đầu") print(set1) #phương thức xóa set1.clear() print("\ntập hợp sử dụng clear()") print(set1)
Tuy nhiên, có hai vấn chính trong bộ Python:
Tập hợp không duy trì các phần tử theo bất kỳ thứ tự cụ thể nào.
Chỉ các phiên bản của các loại bất biến mới có thể được thêm vào set Python.
Toán Tử cho set
key in s | kiểm tra key trong tập hợp s |
key not in s | kiểm tra key không nằm trong tập hợp s |
s1 == s2 | s1 tương đương với s2 |
s1 != s2 | s1 không tương đương với s2 |
s1 <= s2 | s1 là tập con của s2 |
s1 < s2 | s1 là tập con nhỏ hơn của s2 |
s1 >= s2 | s1 là set lớn nhất của s2 |
s1 > s2 | s1 là set cha của s2 |
s1 | s2 | hợp của s1 và s2 |
s1 & s2 | giao của s1 và s2 |
s1 – s2 | set các phần tử trong s1 nhưng không phải s2 |
s1 ˆ s2 | set các phần tử thuộc chính xác một trong số s1 hoặc s2 |