Trong hướng dẫn này, bạn sẽ học mọi thứ về các bộ Python; cách chúng được tạo, thêm hoặc xóa các phần tử khỏi chúng và tất cả các hoạt động được thực hiện trên các tập hợp trong Python.
Video: Bộ bằng Python
Tập hợp là một tập hợp các mục không có thứ tự. Mọi phần tử tập hợp là duy nhất (không trùng lặp) và phải là bất biến (không thể thay đổi).
Tuy nhiên, bản thân một tập hợp là có thể thay đổi. Chúng tôi có thể thêm hoặc xóa các mục khỏi nó.
Các tập hợp cũng có thể được sử dụng để thực hiện các phép toán tập hợp như liên hiệp, giao điểm, chênh lệch đối xứng, v.v.
Tạo bộ Python
Một tập hợp được tạo bằng cách đặt tất cả các mục (phần tử) bên trong dấu ngoặc nhọn ()
, được phân tách bằng dấu phẩy hoặc bằng cách sử dụng hàm dựng sẵn set()
.
Nó có thể có bất kỳ số lượng mục nào và chúng có thể thuộc các kiểu khác nhau (số nguyên, số float, bộ tuple, chuỗi, v.v.). Nhưng một tập hợp không thể có các phần tử có thể thay đổi như danh sách, bộ hoặc từ điển làm phần tử của nó.
# Different types of sets in Python # set of integers my_set = (1, 2, 3) print(my_set) # set of mixed datatypes my_set = (1.0, "Hello", (1, 2, 3)) print(my_set)
Đầu ra
(1, 2, 3) (1,0, (1, 2, 3), 'Xin chào')
Hãy thử các ví dụ sau.
# set cannot have duplicates # Output: (1, 2, 3, 4) my_set = (1, 2, 3, 4, 3, 2) print(my_set) # we can make set from a list # Output: (1, 2, 3) my_set = set((1, 2, 3, 2)) print(my_set) # set cannot have mutable items # here (3, 4) is a mutable list # this will cause an error. my_set = (1, 2, (3, 4))
Đầu ra
(1, 2, 3, 4) (1, 2, 3) Traceback (lần gọi gần đây nhất): Tệp "", dòng 15, trong my_set = (1, 2, (3, 4)) Loại Lỗi: loại không thể truy cập: 'danh sách'
Tạo một tập hợp trống là một chút khó khăn.
Dấu ngoặc nhọn trống ()
sẽ tạo một từ điển trống trong Python. Để tạo một tập hợp không có bất kỳ phần tử nào, chúng ta sử dụng set()
hàm mà không có bất kỳ đối số nào.
# Distinguish set and dictionary while creating empty set # initialize a with () a = () # check data type of a print(type(a)) # initialize a with set() a = set() # check data type of a print(type(a))
Đầu ra
Sửa đổi một tập hợp bằng Python
Bộ có thể thay đổi. Tuy nhiên, vì chúng không có thứ tự nên việc lập chỉ mục không có ý nghĩa.
Chúng tôi không thể truy cập hoặc thay đổi một phần tử của một tập hợp bằng cách sử dụng lập chỉ mục hoặc cắt. Kiểu dữ liệu đặt không hỗ trợ nó.
Chúng ta có thể thêm một phần tử duy nhất bằng add()
phương thức và nhiều phần tử bằng update()
phương thức. Các update()
phương pháp có thể mất tuples, danh sách, dây hoặc bộ khác như là đối số của nó. Trong mọi trường hợp, các bản sao được tránh.
# initialize my_set my_set = (1, 3) print(my_set) # my_set(0) # if you uncomment the above line # you will get an error # TypeError: 'set' object does not support indexing # add an element # Output: (1, 2, 3) my_set.add(2) print(my_set) # add multiple elements # Output: (1, 2, 3, 4) my_set.update((2, 3, 4)) print(my_set) # add list and set # Output: (1, 2, 3, 4, 5, 6, 8) my_set.update((4, 5), (1, 6, 8)) print(my_set)
Đầu ra
(1, 3) (1, 2, 3) (1, 2, 3, 4) (1, 2, 3, 4, 5, 6, 8)
Xóa các phần tử khỏi một tập hợp
Một mục cụ thể có thể được xóa khỏi tập hợp bằng các phương pháp discard()
và remove()
.
Sự khác biệt duy nhất giữa hai discard()
hàm là hàm không thay đổi một tập hợp nếu phần tử không có trong tập hợp đó. Mặt khác, remove()
hàm sẽ phát sinh lỗi trong điều kiện như vậy (nếu phần tử không có trong tập hợp).
Ví dụ sau đây sẽ minh họa điều này.
# Difference between discard() and remove() # initialize my_set my_set = (1, 3, 4, 5, 6) print(my_set) # discard an element # Output: (1, 3, 5, 6) my_set.discard(4) print(my_set) # remove an element # Output: (1, 3, 5) my_set.remove(6) print(my_set) # discard an element # not present in my_set # Output: (1, 3, 5) my_set.discard(2) print(my_set) # remove an element # not present in my_set # you will get an error. # Output: KeyError my_set.remove(2)
Đầu ra
(1, 3, 4, 5, 6) (1, 3, 5, 6) (1, 3, 5) (1, 3, 5) Traceback (lần gọi gần đây nhất): Tệp "", dòng 28, trong KeyError: 2
Tương tự, chúng ta có thể xóa và trả lại một mục bằng pop()
phương thức này.
Vì tập hợp là một kiểu dữ liệu không có thứ tự, không có cách nào để xác định mục nào sẽ được xuất hiện. Nó là hoàn toàn tùy ý.
Chúng tôi cũng có thể xóa tất cả các mục khỏi một tập hợp bằng clear()
phương pháp này.
# initialize my_set # Output: set of unique elements my_set = set("HelloWorld") print(my_set) # pop an element # Output: random element print(my_set.pop()) # pop another element my_set.pop() print(my_set) # clear my_set # Output: set() my_set.clear() print(my_set) print(my_set)
Đầu ra
('H', 'l', 'r', 'W', 'o', 'd', 'e') H ('r', 'W', 'o', 'd', 'e' ) bộ()
Hoạt động tập hợp Python
Các tập hợp có thể được sử dụng để thực hiện các phép toán tập hợp như liên hợp, giao điểm, hiệu số và hiệu số đối xứng. Chúng ta có thể làm điều này bằng các toán tử hoặc phương thức.
Chúng ta hãy xem xét hai tập hợp sau đây cho các hoạt động sau đây.
>>> A = (1, 2, 3, 4, 5) >>> B = (4, 5, 6, 7, 8)
Đặt Liên minh

Liên hiệp của A và B là một tập hợp tất cả các phần tử từ cả hai tập hợp.
Union được thực hiện bằng cách sử dụng |
toán tử. Tương tự có thể được thực hiện bằng cách sử dụng union()
phương pháp này.
# Set union method # initialize A and B A = (1, 2, 3, 4, 5) B = (4, 5, 6, 7, 8) # use | operator # Output: (1, 2, 3, 4, 5, 6, 7, 8) print(A | B)
Đầu ra
(1, 2, 3, 4, 5, 6, 7, 8)
Hãy thử các ví dụ sau trên trình bao Python.
# use union function >>> A.union(B) (1, 2, 3, 4, 5, 6, 7, 8) # use union function on B >>> B.union(A) (1, 2, 3, 4, 5, 6, 7, 8)
Đặt giao lộ

Giao của A và B là tập hợp các phần tử là chung của cả hai tập hợp.
Giao lộ được thực hiện bằng &
toán tử. Tương tự có thể được thực hiện bằng cách sử dụng intersection()
phương pháp này.
# Intersection of sets # initialize A and B A = (1, 2, 3, 4, 5) B = (4, 5, 6, 7, 8) # use & operator # Output: (4, 5) print(A & B)
Đầu ra
(4, 5)
Hãy thử các ví dụ sau trên trình bao Python.
# use intersection function on A >>> A.intersection(B) (4, 5) # use intersection function on B >>> B.intersection(A) (4, 5)
Đặt sự khác biệt

Sự khác biệt của tập hợp B với tập hợp A (A - B) là tập hợp các phần tử chỉ thuộc A mà không thuộc B. Tương tự, B - A là tập hợp các phần tử thuộc B nhưng không thuộc A.
Sự khác biệt được thực hiện bằng cách sử dụng -
toán tử. Tương tự có thể được thực hiện bằng cách sử dụng difference()
phương pháp này.
# Difference of two sets # initialize A and B A = (1, 2, 3, 4, 5) B = (4, 5, 6, 7, 8) # use - operator on A # Output: (1, 2, 3) print(A - B)
Đầu ra
(1, 2, 3)
Hãy thử các ví dụ sau trên trình bao Python.
# use difference function on A >>> A.difference(B) (1, 2, 3) # use - operator on B >>> B - A (8, 6, 7) # use difference function on B >>> B.difference(A) (8, 6, 7)
Đặt sự khác biệt đối xứng

Hiệu số đối xứng của A và B là tập hợp các phần tử trong A và B nhưng không thuộc cả hai (không kể giao điểm).
Sự khác biệt đối xứng được thực hiện bằng cách sử dụng ^
toán tử. Tương tự có thể được thực hiện bằng cách sử dụng phương pháp này symmetric_difference()
.
# Symmetric difference of two sets # initialize A and B A = (1, 2, 3, 4, 5) B = (4, 5, 6, 7, 8) # use operator # Output: (1, 2, 3, 6, 7, 8) print(A B)
Đầu ra
(1, 2, 3, 6, 7, 8)
Hãy thử các ví dụ sau trên trình bao Python.
# use symmetric_difference function on A >>> A.symmetric_difference(B) (1, 2, 3, 6, 7, 8) # use symmetric_difference function on B >>> B.symmetric_difference(A) (1, 2, 3, 6, 7, 8)
Các phương pháp tập hợp Python khác
There are many set methods, some of which we have already used above. Here is a list of all the methods that are available with the set objects:
Method | Description |
---|---|
add() | Adds an element to the set |
clear() | Removes all elements from the set |
copy() | Returns a copy of the set |
difference() | Returns the difference of two or more sets as a new set |
difference_update() | Removes all elements of another set from this set |
discard() | Removes an element from the set if it is a member. (Do nothing if the element is not in set) |
intersection() | Returns the intersection of two sets as a new set |
intersection_update() | Updates the set with the intersection of itself and another |
isdisjoint() | Returns True if two sets have a null intersection |
issubset() | Returns True if another set contains this set |
issuperset() | Returns True if this set contains another set |
pop() | Removes and returns an arbitrary set element. Raises KeyError if the set is empty |
remove() | Removes an element from the set. If the element is not a member, raises a KeyError |
symmetric_difference() | Returns the symmetric difference of two sets as a new set |
symmetric_difference_update() | Updates a set with the symmetric difference of itself and another |
union() | Returns the union of sets in a new set |
update() | Updates the set with the union of itself and others |
Other Set Operations
Set Membership Test
We can test if an item exists in a set or not, using the in
keyword.
# in keyword in a set # initialize my_set my_set = set("apple") # check if 'a' is present # Output: True print('a' in my_set) # check if 'p' is present # Output: False print('p' not in my_set)
Output
True False
Iterating Through a Set
We can iterate through each item in a set using a for
loop.
>>> for letter in set("apple"):… print(letter)… a p e l
Built-in Functions with Set
Built-in functions like all()
, any()
, enumerate()
, len()
, max()
, min()
, sorted()
, sum()
etc. are commonly used with sets to perform different tasks.
Function | Description |
---|---|
all() | Returns True if all elements of the set are true (or if the set is empty). |
any() | Returns True if any element of the set is true. If the set is empty, returns False . |
enumerate() | Returns an enumerate object. It contains the index and value for all the items of the set as a pair. |
len() | Returns the length (the number of items) in the set. |
max() | Returns the largest item in the set. |
min() | Returns the smallest item in the set. |
sorted() | Returns a new sorted list from elements in the set(does not sort the set itself). |
sum() | Returns the sum of all elements in the set. |
Python Frozenset
Frozenset là một lớp mới có các đặc điểm của một tập hợp, nhưng các phần tử của nó không thể thay đổi sau khi được gán. Trong khi các bộ giá trị là danh sách bất biến, các bộ giá trị là các bộ bất biến.
Các tập hợp có thể thay đổi không thể thay đổi được, vì vậy chúng không thể được sử dụng làm khóa từ điển. Mặt khác, các bảng xếp hạng có thể được băm và có thể được sử dụng làm khóa cho từ điển.
Các đám đông có thể được tạo bằng cách sử dụng hàm frozenset ().
Kiểu dữ liệu này hỗ trợ các phương pháp thích copy()
, difference()
, intersection()
, isdisjoint()
, issubset()
, issuperset()
, symmetric_difference()
và union()
. Là bất biến, nó không có các phương thức thêm hoặc bớt các phần tử.
# Frozensets # initialize A and B A = frozenset((1, 2, 3, 4)) B = frozenset((3, 4, 5, 6))
Hãy thử các ví dụ này trên Python shell.
>>> A.isdisjoint(B) False >>> A.difference(B) frozenset((1, 2)) >>> A | B frozenset((1, 2, 3, 4, 5, 6)) >>> A.add(3)… AttributeError: 'frozenset' object has no attribute 'add'