Trong toán học, tập hợp (set) là tập các đối tượng riêng biệt, được xem như một đối tượng riêng. Ví dụ: số 2, 4, 6 là đối tượng riêng biệt nhưng khi gom lại thành một tập hợp kích thước 3, viết {2,4,6}.
Các phép toán trên Set
| Phép Toán | Ký Hiệu | Ý Nghĩa |
|---|---|---|
| Giao (Intersection) | A ∩ B | Tất cả phần tử có trong cả A và B |
| Hợp (Union) | A ∪ B | Tất cả phần tử có trong A hoặc B (hoặc cả hai) |
| Hiệu (Difference) | A − B | Tất cả phần tử có trong A nhưng không trong B |
| Phần bù (Complement) | (hoặc) | Tất cả phần tử không trong A |
Trong Python, so với list, ưu điểm chính của set là có hàm tối ưu để kiểm tra xem một phần tử có phải thành viên của set hay không. Điều này dựa trên cấu trúc dữ liệu bảng băm (hash table).
Các phương thức cho Set
Phương thức add(x): Thêm mục x vào set nếu chưa tồn tại.
A = {"AA", "BB", "CC"} A.add("VV") Sẽ thêm VV vào set A.
Phương thức union(s): Trả về hợp của hai set. Dùng toán tử '|' giữa 2 set tương đương My_Set1.union(My_Set2).
A = {"AA", "BB", "CC"} B = {"MM", "NN"} Z = A.union(B) HOẶC Z = A|B Set kết quả sẽ có thành phần của cả A và B.
Phương thức intersect(s): Trả về giao của hai set cho trước. Toán tử '&' dùng cho phép toán này.
S = A.intersection(B)
Set kết quả chứa phần tử chung của A và B.
Phương thức difference(s): Trả về set chứa tất cả phần tử có trong set đầu tiên nhưng không trong set thứ hai. Dùng toán tử '-'.
W = A.difference(B) HOẶC S = A - B
Set kết quả có tất cả phần tử trong A nhưng không trong B.
Phương thức clear(): Toàn bộ set hiện tại trở nên rỗng.
B.clear()
Xóa set B
Các toán tử cho Set
Set và frozenset hỗ trợ các toán tử sau:
key in s # kiểm tra thành viên key not in s # kiểm tra không thành viên s1 == s2 # s1 tương đương s2 s1 != s2 # s1 không tương đương s2 s1 <= s2 # s1 là tập con của s2 s1 < s2 # s1 là tập con thực của s2 s1 >= s2 # s1 là tập cha của s2 s1 > s2 # s1 là tập cha thực của s2 s1 | s2 # hợp của s1 và s2 s1 & s2 # giao của s1 và s2 s1 - s2 # tập phần tử trong s1 không trong s2 s1 ^ s2 # tập phần tử chỉ trong một trong s1 hoặc s2
Mã ví dụ
# Chương trình Python demo hoạt động # của Set trong Python # Tạo hai set My_Set1 = set() My_Set2 = set() # Thêm phần tử vào My_Set1 for i in range(1, 6): My_Set1.add(i) # Thêm phần tử vào My_Set2 for i in range(3, 8): My_Set2.add(i) print("My_Set1 = ", My_Set1) print("My_Set2 = ", My_Set2) print("\n") # Hợp của My_Set1 và My_Set2 My_Set3 = My_Set1 | My_Set2 # My_Set1.union(My_Set2) print("Hợp My_Set1&My_Set2: My_Set3 = ", My_Set3) # Giao của My_Set1 và My_Set2 My_Set4 = My_Set1 & My_Set2 # My_Set1.intersection(My_Set2) print("Giao My_Set1&My_Set2: My_Set4 = ", My_Set4) print("\n") # Kiểm tra quan hệ giữa My_Set3 và My_Set4 if My_Set3 > My_Set4: # My_Set3.issuperset(My_Set4) print("My_Set3 là tập cha của My_Set4") elif My_Set3 < My_Set4: # My_Set3.issubset(My_Set4) print("My_Set3 là tập con của My_Set4") else: # My_Set3 == My_Set4 print("My_Set3 giống My_Set4") # Hiển thị quan hệ giữa My_Set4 và My_Set3 if My_Set4 < My_Set3: # My_Set4.issubset(My_Set3) print("My_Set4 là tập con của My_Set3") print("\n") # Hiệu giữa My_Set3 và My_Set4 My_Set5 = My_Set3 - My_Set4 print("Phần tử trong My_Set3 không trong My_Set4: My_Set5 = ", My_Set5) print("\n") # Kiểm tra My_Set4 và My_Set5 có phải set rời rạc không if My_Set4.isdisjoint(My_Set5): print("My_Set4 và My_Set5 không có gì chung\n") # Xóa tất cả giá trị của My_Set5 My_Set5.clear() print("Sau khi áp dụng clear trên My_Set5: ") print("My_Set5 = ", My_Set5) Kết quả
My_Set1 = {1, 2, 3, 4, 5} My_Set2 = {3, 4, 5, 6, 7} Hợp My_Set1&My_Set2: My_Set3 = {1, 2, 3, 4, 5, 6, 7} Giao My_Set1&My_Set2: My_Set4 = {3, 4, 5} My_Set3 là tập cha của My_Set4 My_Set4 là tập con của My_Set3 Phần tử trong My_Set3 không trong My_Set4: My_Set5 = {1, 2, 6, 7} My_Set4 và My_Set5 không có gì chung Sau khi áp dụng clear trên My_Set5: My_Set5 = set()