Trong Python, Set là một set các kiểu dữ liệu không có thứ tự có thể lặp lại, có thể thay đổi và không có các phần tử trùng lặp. Thứ tự của các phần tử trong một set là không được xác định mặc dù nó có thể bao gồm nhiều phần tử khác nhau.
Trái ngược với list, ưu điểm chính của việc sử dụng set là nó có một phương thức được tối ưu hóa cao để kiểm tra xem một phần tử cụ thể có được chứa trong set hay không.
Nội dung chính
1. Tạo một set
Các set có thể được tạo bằng cách sử dụng hàm tích hợp set() với một đối tượng có thể lặp hoặc một chuỗi bằng cách đặt chuỗi bên trong các dấu ngoặc nhọn, ngăn cách nhau bằng ‘dấu phẩy’.
Lưu ý – Một set không thể có các phần tử có thể thay đổi như list, set hoặc từ điển.
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
# Python program to demonstrate
# Creation of Set in Python
# Creating a Set
set1 = set()
print("Intial blank Set: ")
print(set1)
# Creating a Set with
# the use of a String
set1 = set("Cafedev")
print("\nSet with the use of String: ")
print(set1)
# Creating a Set with
# the use of Constructor
# (Using object to Store String)
String = 'Cafedev'
set1 = set(String)
print("\nSet with the use of an Object: " )
print(set1)
# Creating a Set with
# the use of a List
set1 = set(["Cafedev", "For", "Cafedev"])
print("\nSet with the use of List: ")
print(set1)
Kết quả:
Intial blank Set:
set()
Set with the use of String:
{'e', 'r', 'k', 'o', 'G', 's', 'F'}
Set with the use of an Object:
{'r', 'o', 'e', 'F', 's', 'k', 'G'}
Set with the use of List:
{'Cafedev', 'For'}
Một set chỉ chứa các phần tử duy nhất nhưng tại thời điểm tạo nó, nhiều giá trị trùng lặp cũng có thể được truyền qua. Thứ tự các phần tử trong một set là không xác định và không thể thay đổi. Loại phần tử trong một set không cần phải giống nhau, các giá trị kiểu dữ liệu hỗn hợp khác nhau cũng có thể được truyền cho set.
# Creating a Set with
# a List of Numbers
# (Having duplicate values)
set1 = set([1, 2, 4, 4, 3, 3, 3, 6, 5])
print("\nSet with the use of Numbers: ")
print(set1)
# Creating a Set with
# a mixed type of values
# (Having numbers and strings)
set1 = set([1, 2, 'Cafedev', 4, 'For', 6, 'Cafedev'])
print("\nSet with the use of Mixed Values")
print(set1)
Kết quả:
Set with the use of Numbers:
{1, 2, 3, 4, 5, 6}
Set with the use of Mixed Values
{1, 2, 4, 'Cafedev', 6, 'For'}
2. Thêm các thành phần vào một set
Sử dụng phương thức add()
Có thể thêm các thành phần vào Set bằng cách sử dụng hàm tích hợp add(). Mỗi lần ta chỉ có thể thêm một phần tử vào set bằng cách sử dụng phương thức add(), các vòng lặp được sử dụng để thêm nhiều phần tử cùng một lúc với việc sử dụng phương thức add().
Lưu ý – List không thể được thêm vào một set dưới dạng các phần tử vì List không thể cắt được trong khi Tuples có thể được thêm vào vì chúng là bất biến và do đó có thể cắt được.
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
# Python program to demonstrate
# Addition of elements in a Set
# Creating a Set
set1 = set()
print("Intial blank Set: ")
print(set1)
# Adding element and tuple to the Set
set1.add(8)
set1.add(9)
set1.add((6,7))
print("\nSet after Addition of Three elements: ")
print(set1)
# Adding elements to the Set
# using Iterator
for i in range(1, 6):
set1.add(i)
print("\nSet after Addition of elements from 1-5: ")
print(set1)
Kết quả:
Intial blank Set:
set()
Set after Addition of Three elements:
{8, 9, (6, 7)}
Set after Addition of elements from 1-5:
{1, 2, 3, (6, 7), 4, 5, 8, 9}
Sử dụng phương thức update()
Để thêm hai hoặc nhiều phần tử, người ta sử dụng phương thức update(). Các phương thức update() chấp nhận list, string, tuple cũng như các set khác như các đối số của nó. Trong tất cả các trường hợp này, chúng ta nên tránh các phần tử trùng lặp.
# Python program to demonstrate
# Addition of elements in a Set
# Addition of elements to the Set
# using Update function
set1 = set([ 4, 5, (6, 7)])
set1.update([10, 11])
print("\nSet after Addition of elements using Update: ")
print(set1)
Kết quả:
Set after Addition of elements using Update:
{10, 11, 4, 5, (6, 7)}
3. Truy cập một set
Không thể truy cập các mục của set bằng cách lập chỉ mục, vì các set không được sắp xếp nên các mục không có chỉ mục. Nhưng bạn có thể lặp qua các mục của set bằng vòng lặp for hoặc kiểm tra xem giá trị đã chỉ định có trong một set hay không, bằng cách sử dụng the trong từ khóa.
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
# Python program to demonstrate
# Accessing of elements in a set
# Creating a set
set1 = set(["Cafedev", "For", "Cafedev"])
print("\nInitial set")
print(set1)
# Accessing element using
# for loop
print("\nElements of set: ")
for i in set1:
print(i, end=" ")
# Checking the element
# using in keyword
print("Cafedev" in set1)
Kết quả:
Initial set:
{'Cafedev', 'For'}
Elements of set:
Geeks For
True
Xóa các phần tử khỏi Set
Sử dụng phương thức remove()hoặc phương thức discard()
Các phần tử có thể được xóa khỏi Set bằng cách sử dụng hàm tích hợp remove() nhưng sẽ phát sinh Keyerror nếu phần tử không tồn tại trong set. Để xóa các phần tử khỏi set mà không có KeyError, hãy sử dụng phương thức discard(), nếu phần tử không tồn tại trong set, nó vẫn không thay đổi.
# Python program to demonstrate
# Deletion of elements in a Set
# Creating a Set
set1 = set([1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12])
print("Intial Set: ")
print(set1)
# Removing elements from Set
# using Remove() method
set1.remove(5)
set1.remove(6)
print("\nSet after Removal of two elements: ")
print(set1)
# Removing elements from Set
# using Discard() method
set1.discard(8)
set1.discard(9)
print("\nSet after Discarding two elements: ")
print(set1)
# Removing elements from Set
# using iterator method
for i in range(1, 5):
set1.remove(i)
print("\nSet after Removing a range of elements: ")
print(set1)
Kết quả:
Intial Set:
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
Set after Removal of two elements:
{1, 2, 3, 4, 7, 8, 9, 10, 11, 12}
Set after Discarding two elements:
{1, 2, 3, 4, 7, 10, 11, 12}
Set after Removing a range of elements:
{7, 10, 11, 12}
Sử dụng phương thức pop()
Hàm Pop() cũng có thể được sử dụng để xóa và trả về một phần tử khỏi set, nhưng nó chỉ loại bỏ phần tử cuối cùng của set.
Lưu ý – Nếu set không có trật tự thì không có cách nào để xác định phần tử nào bị xóa bởi hàm pop().
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
# Python program to demonstrate
# Deletion of elements in a Set
# Creating a Set
set1 = set([1, 2, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12])
print("Intial Set: ")
print(set1)
# Removing element from the
# Set using the pop() method
set1.pop()
print("\nSet after popping an element: ")
print(set1)
Kết quả:
Intial Set:
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
Set after popping an element:
{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
Sử dụng phương thức clear()
Để loại bỏ tất cả các thành phần khỏi set, hàm clear()được sử dụng.
#Creating a set
set1 = set([1,2,3,4,5])
print("\n Initial set: ")
print(set1)
# Removing all the elements from
# Set using clear() method
set1.clear()
print("\nSet after clearing all the elements: ")
print(set1)
Kết quả:
Initial set:
{1, 2, 3, 4, 5}
Set after clearing all the elements:
set()
Các set bị đóng băng 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 bị đóng băng đó hoặc các set mà chúng được áp dụng. Mặc dù các phần tử của một set có thể được sửa đổi bất cứ lúc nào, các phần tử của set bị đóng băng vẫn giữ nguyên sau khi được tạo.
Nếu không có tham số nào được truyền qua, nó sẽ trả về một set đóng băng rỗng.
# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: https://www.facebook.com/cafedevn
#Instagram: https://instagram.com/cafedevn
#Twitter: https://twitter.com/CafedeVn
#Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------
# Python program to demonstrate
# working of a FrozenSet
# Creating a Set
String = ('C', 'a', 'f', 'e', 'd', 'e', 'v', 'r')
Fset1 = frozenset(String)
print("The FrozenSet is: ")
print(Fset1)
# To print Empty Frozen Set
# No parameter is passed
print("\nEmpty FrozenSet: ")
print(frozenset())
4. Các phương thức trong set
HÀM | MÔ TẢ |
add() | Thêm một phần tử vào một set |
remove() | Loại bỏ một phần tử từ một set. Nếu phần tử không có trong set, sẽ phát sinh lỗi KeyError |
clear() | Loại bỏ tất cả các phần tử tạo thành một set |
Copy() | Trả về một bản sao của một set |
Pop() | Loại bỏ và trả về một phần tử thiết lập tùy ý. Phát sinh lỗi KeyError nếu set trống |
Update() | Cập nhật một set với sự kết hợp của chính nó và những set khác |
Union() | Trả về sự kết hợp của các set trong một set mới |
difference() | Trả về sự khác biệt của hai hoặc nhiều set dưới dạng một set mới |
difference_update() | Xóa tất cả các thành phần của set khác khỏi set này |
Discard() | Xóa một phần tử khỏi set nếu nó là thành viên. (Không làm gì nếu phần tử không được thiết lập) |
intersection() | Trả về giao điểm của hai set là một set mới |
intersection_update () | Cập nhật set với giao điểm của chính nó và khác |
isdisjoint() | Trả về Đúng nếu hai set có giao điểm null |
issubset() | Trả về Đúng nếu set khác chứa set này |
issuperset () | Trả về Đúng nếu set này chứa set khác |
symmetric_difference() | Trả về sự khác biệt đối xứng của hai set dưới dạng một set mới |
symmetric_difference_update(). | Cập nhật một set với sự khác biệt đối xứng của chính nó và một set khác |
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
- Ebook về python tại đây.
- Các series tự học lập trình khác
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!