Trong Python, một tập hợp (set) là một tập hợp không có thứ tự của các phần tử duy nhất. Khác với danh sách (lists) hoặc bộ (tuples), tập hợp không cho phép các giá trị trùng lặp, nghĩa là mỗi phần tử trong một tập hợp phải là duy nhất. Tập hợp có thể thay đổi (mutable), có nghĩa là bạn có thể thêm hoặc xóa các mục sau khi tập hợp đã được tạo.
Các tập hợp được định nghĩa bằng cách sử dụng dấu ngoặc nhọn {} hoặc hàm tích hợp sẵn set() . Chúng đặc biệt hữu ích cho việc kiểm tra thành viên, loại bỏ các phần tử trùng lặp từ một chuỗi, và thực hiện các phép toán tập hợp toán học phổ biến như hợp, giao và hiệu.
A set refers to a collection of distinct objects. It is used to group objects together and to study their properties and relationships. The objects in a set are called elements or members of the set.
Tạo một tập hợp trong Python đề cập đến việc định nghĩa và khởi tạo một bộ sưu tập các phần tử duy nhất. Điều này bao gồm việc chỉ định các phần tử sẽ là một phần của tập hợp, đảm bảo rằng mỗi phần tử là duy nhất trong tập hợp.
Bạn có thể tạo một tập hợp trong Python bằng cách sử dụng dấu ngoặc nhọn {} hoặc hàm set().
Bạn có thể định nghĩa một tập hợp trực tiếp bằng cách liệt kê các phần tử của nó trong dấu ngoặc nhọn, phân cách mỗi phần tử bằng dấu phẩy như được trình bày dưới đây −
my_set = {1, 2, 3, 4, 5} print (my_set)
Nó sẽ tạo ra kết quả sau −
{1, 2, 3, 4, 5}
Ngoài ra, bạn có thể tạo một tập hợp bằng cách sử dụng hàm set() bằng cách truyền một iterable (như danh sách hoặc tuple) chứa các phần tử mà bạn muốn bao gồm trong tập hợp −
my_set = set([1, 2, 3, 4, 5]) print (my_set)
Chúng ta nhận được đầu ra như được hiển thị bên dưới −
{1, 2, 3, 4, 5}
Tập hợp trong Python là các tập hợp không có thứ tự của các phần tử duy nhất. Nếu bạn cố gắng tạo một tập hợp với các phần tử trùng lặp, các phần tử trùng lặp sẽ tự động bị loại bỏ.
my_set = {1, 2, 2, 3, 3, 4, 5, 5} print (my_set)
Kết quả thu được như dưới đây −
{1, 2, 3, 4, 5}
Tập hợp (sets) có thể chứa các phần tử của các kiểu dữ liệu khác nhau, bao gồm số, chuỗi và thậm chí là các tập hợp khác (miễn là chúng không thay đổi - immutable).
mixed_set = {1, 'hello', (1, 2, 3)} print (mixed_set)
Kết quả thu được như sau −
{1, 'hello', (1, 2, 3)}
Trong Python, tập hợp hỗ trợ nhiều thao tác cơ bản khác nhau được sử dụng để thao tác với các phần tử của chúng. Những thao tác này bao gồm thêm và xóa phần tử, kiểm tra sự hiện diện, và thực hiện các thao tác đặc trưng của tập hợp như hợp nhất, giao nhau, hiệu, và hiệu đối xứng.
Để thêm một phần tử vào một tập hợp, bạn có thể sử dụng hàm add(). Điều này rất hữu ích khi bạn muốn bao gồm các phần tử mới vào một tập hợp hiện có. Nếu phần tử đã có trong tập hợp, tập hợp sẽ không thay đổi.
my_set = {1, 2, 3, 3} # Adding an element 4 to the set my_set.add(4) print (my_set)
Dưới đây là kết quả thu được −
{1, 2, 3, 4}
Bạn có thể loại bỏ một phần tử khỏi tập hợp bằng cách sử dụng hàm remove(). Điều này rất hữu ích khi bạn muốn loại bỏ các phần tử cụ thể khỏi tập hợp. Nếu phần tử không có trong tập hợp, một KeyError sẽ được phát sinh.
my_set = {1, 2, 3, 4} # Removes the element 3 from the set my_set.remove(3) print (my_set)
Đầu ra hiển thị như sau −
{1, 2, 4}
Ngoài ra, bạn có thể sử dụng hàm discard() để loại bỏ một phần tử khỏi tập hợp nếu nó có mặt. Khác với remove(), discard() không gây ra lỗi nếu phần tử không được tìm thấy trong tập hợp.
my_set = {1, 2, 3, 4} # No error even if 5 is not in the set my_set.discard(5) print (my_set)
Chúng ta nhận được đầu ra như được hiển thị bên dưới −
{1, 2, 3, 4}
Các tập hợp cung cấp một cách hiệu quả để kiểm tra xem một phần tử có tồn tại trong tập hợp hay không. Bạn có thể sử dụng từ khóa in để thực hiện kiểm tra này, nó sẽ trả về True nếu phần tử có mặt và False nếu không.
my_set = {1, 2, 3, 4} if 2 in my_set: print("2 is present in the set") else: print("2 is not present in the set")
Dưới đây là kết quả của đoạn mã trên −
2 is present in the set
Trong Python, tập hợp (sets) hỗ trợ nhiều phép toán tập hợp khác nhau, được sử dụng để thao tác và so sánh các tập hợp. Những phép toán này bao gồm hợp (union), giao (intersection), hiệu (difference), hiệu đối xứng (symmetric difference), và kiểm tra tập con (subset testing). Tập hợp đặc biệt hữu ích khi làm việc với các tập hợp các phần tử duy nhất và thực hiện các phép toán dựa trên lý thuyết tập hợp.
Union − Nó kết hợp các phần tử từ cả hai tập hợp bằng cách sử dụng hàm union() hoặc toán tử | .
Intersection − Nó được sử dụng để lấy các phần tử chung bằng cách sử dụng hàm intersection() hoặc toán tử & .
Difference − Nó được sử dụng để lấy các phần tử có trong một tập hợp nhưng không có trong tập hợp khác bằng cách sử dụng hàm difference() hoặc toán tử - .
Symmetric Difference − Nó được sử dụng để lấy các phần tử có trong một trong hai tập hợp nhưng không có trong cả hai bằng cách sử dụng phương thức symmetric_difference() hoặc toán tử ^ .
Tập hợp hiểu trong Python là một cách ngắn gọn để tạo ra các tập hợp dựa trên các đối tượng có thể lặp lại, tương tự như các hiểu danh sách. Nó được sử dụng để tạo ra các tập hợp bằng cách áp dụng một biểu thức cho mỗi mục trong một đối tượng có thể lặp lại.
Các biểu thức tập hợp (set comprehensions) rất hữu ích khi bạn cần tạo một tập hợp từ kết quả của việc áp dụng một số phép toán hoặc lọc các phần tử từ một iterable khác.
Cú pháp cho các phép hiểu tập hợp (set comprehensions) tương tự như các phép hiểu danh sách (list comprehensions), nhưng thay vì sử dụng dấu ngoặc vuông [ ], bạn sử dụng dấu ngoặc nhọn { } để chỉ định một tập hợp.
set_variable = {expression for item in iterable if condition}
Trong ví dụ sau, chúng ta đang tạo một tập hợp chứa bình phương của các số từ 1 đến 5 bằng cách sử dụng biểu thức tập hợp −
squared_set = {x**2 for x in range(1, 6)} print(squared_set)
Đầu ra thu được như sau −
{1, 4, 9, 16, 25}
Bạn có thể bao gồm các câu lệnh điều kiện trong các phép lấy tập hợp để lọc các phần tử dựa trên các tiêu chí nhất định. Ví dụ, để tạo một tập hợp các số chẵn từ 1 đến 10, bạn có thể sử dụng một phép lấy tập hợp với điều kiện if như dưới đây −
even_set = {x for x in range(1, 11) if x % 2 == 0} print(even_set)
Điều này sẽ tạo ra đầu ra sau −
{2, 4, 6, 8, 10}
Các phép hiểu tập hợp (set comprehensions) cũng hỗ trợ vòng lặp lồng nhau, cho phép bạn tạo ra các tập hợp từ các iterable lồng nhau. Điều này có thể hữu ích để tạo ra các tổ hợp hoặc hoán vị của các phần tử.
nested_set = {(x, y) for x in range(1, 3) for y in range(1, 3)} print(nested_set)
Đầu ra của đoạn mã trên như sau −
{(1, 1), (1, 2), (2, 1), (2, 2)}
Trong Python, một frozen set là một tập hợp không thay đổi của các phần tử duy nhất, tương tự như một tập hợp thông thường nhưng có sự khác biệt là nó không thể được sửa đổi sau khi được tạo ra. Khi đã được tạo, các phần tử trong một frozen set không thể được thêm, xóa hoặc sửa đổi, khiến nó trở thành một lựa chọn phù hợp khi bạn cần một tập hợp không thay đổi.
Bạn có thể tạo một tập hợp đông lạnh (frozen set) trong Python bằng cách sử dụng hàm frozenset() bằng cách truyền vào một iterable (chẳng hạn như danh sách, tuple hoặc một tập hợp khác) chứa các phần tử mà bạn muốn bao gồm trong tập hợp đông lạnh.
Trong ví dụ sau, chúng ta đang tạo một tập hợp đông lạnh (frozen set) các số nguyên và sau đó thêm một phần tử vào nó −
my_frozen_set = frozenset([1, 2, 3]) print(my_frozen_set) my_frozen_set.add(4)
Dưới đây là kết quả của đoạn mã trên −
frozenset({1, 2, 3}) Traceback (most recent call last): File "/home/cg/root/664b2732e125d/main.py", line 3, in <module> my_frozen_set.add(4) AttributeError: 'frozenset' object has no attribute 'add'