Set trong Python là một kiểu dữ liệu collection độc đáo với những đặc điểm riêng biệt. Set được sử dụng để lưu trữ các phần tử không trùng lặp và không có thứ tự. Khả năng này của Set mang lại nhiều lợi ích trong việc xử lý và quản lý dữ liệu. Vậy cụ thể Set trong Python là gì và cách thức hoạt động như thế nào? Hãy cùng mình tìm hiểu chi tiết trong bài viết này.
Các điểm chính
Đọc xong bài viết, bạn sẽ:
- Hiểu rõ khái niệm và bản chất của set trong Python: Bạn sẽ nắm vững set là gì, sự khác biệt so với các cấu trúc dữ liệu khác như list hay tuple, và tại sao set lại hữu ích.
- Nắm vững các phương pháp tạo set trong Python: Bạn sẽ học được cả hai cách phổ biến để tạo set sử dụng dấu ngoặc nhọn
{}
và sử dụng hàmset()
. Điều này giúp bạn linh hoạt trong việc sử dụng set. - Thành thạo các thao tác cơ bản với set: Bạn sẽ biết cách thêm, xóa, kiểm tra phần tử trong set một cách dễ dàng. Đồng thời, bạn cũng sẽ hiểu rõ về cách set xử lý các phần tử trùng lặp.
- Làm quen với các phép toán trên set và ứng dụng thực tế: Bạn sẽ được giới thiệu về các phép toán như hợp, giao, hiệu, và hiệu đối xứng, từ đó biết cách giải quyết các bài toán cụ thể bằng set.
- Khám phá sức mạnh của Set Comprehensions: Bạn sẽ học được một cú pháp ngắn gọn và mạnh mẽ để tạo set một cách linh hoạt và hiệu quả. Bên cạnh đó, bạn còn hiểu được khi nào thì nên sử dụng
frozenset
. - Tìm hiểu về dịch vụ VPS Vietnix – Lựa chọn tối ưu cho website nhanh chóng và an toàn.
Set trong Python là gì?
Trong Python, set là một tập hợp không có thứ tự các phần tử duy nhất. Không giống như list hay tuple, set trong Python không cho phép các giá trị trùng lặp, nghĩa là mỗi phần tử trong set phải là duy nhất. Set có thể thay đổi được (mutable), đồng nghĩa với việc bạn có thể thêm hoặc xóa các phần tử sau khi một set đã được tạo.

Set được định nghĩa bằng cách sử dụng dấu ngoặc nhọn {}
hoặc hàm khởi tạo set()
. Chúng đặc biệt hữu ích cho việc kiểm tra một phần tử có thuộc set hay không, 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 set phổ biến trong toán học như hợp, giao và hiệu.
Một set là một tập hợp của các đối tượng riêng biệt. Set được sử dụng để nhóm các đối tượng lại với nhau, và để nghiên cứu các đặc tính, cũng như mối quan hệ của các phần tử. Các đối tượng trong set được gọi là các phần tử hoặc thành viên của set.
Tạo set trong Python
Tạo một set trong Python có nghĩa là bạn xác định và khởi tạo một tập hợp các phần tử duy nhất. Quá trình này bao gồm việc chỉ định các phần tử sẽ là một phần của set, đồng thời đảm bảo rằng mỗi phần tử là duy nhất trong set đó.
Có hai cách chính để tạo một set trong Python: sử dụng dấu ngoặc nhọn {}
hoặc hàm set()
.
Cách 1: Sử dụng dấu ngoặc nhọn {}
Bạn có thể trực tiếp định nghĩa một set bằng cách liệt kê các phần tử của set trong dấu ngoặc nhọn, phân tách các phần tử bằng dấu phẩy như sau:
my_set = {1, 2, 3, 4, 4, 5} #Chú ý phần tử 4 được lặp lại
print(my_set)
Kết quả hiển thị sẽ là:
{1, 2, 3, 4, 5}
Giải thích:
my_set = {1, 2, 3, 4, 4}
: Đoạn code khởi tạo 1set
và gán giá trị choset
đó với biếnmy_set
, lưu ý phần tử số 4 được lặp lại nhưngset
đó chỉ hiển thị ra 1 phần tử.- Bạn chú ý, dù có số 4 xuất hiện 2 lần khi khởi tạo,
set
chỉ giữ lại 1 phần tử có giá trị 4 vì các phần tử trongset
là duy nhất.
Cách 2: Sử dụng hàm set()
Ngoài ra, bạn có thể tạo một set bằng cách sử dụng hàm set()
, truyền vào một đối tượng có thể lặp được chứa các phần tử bạn muốn đưa vào set:
my_list = [1, 2, 2, 3, 4, 5, 5] # Đây là một List, có phần tử trùng lặp
my_set = set(my_list) # Tạo set từ List
print(my_set)
Kết quả sẽ là:
{1, 2, 3, 4, 5}
Giải thích:
- Đầu tiên ta có 1 biến
my_list
được khởi tạo theo kiểu dữ liệuList
- Tạo 1
set
mới và gán vào biếnmy_set
, với hàm khởi tạoset()
có đầu vào làmy_list
. - Kết quả trả về chỉ có các phần tử duy nhất.
Phần tử trùng lặp trong set
Set trong Python là các tập hợp không có thứ tự của các phần tử duy nhất. Điều này có nghĩa là nếu bạn cố gắng tạo một set 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ỏ. Ví dụ:
my_set = {1, 2, 2, 3, 3, 4, 5, 5}
print(my_set)
Kết quả thu được như sau:
{1, 2, 3, 4, 5}
Giải thích:
- Đoạn code trên tạo một
set
có tênmy_set
với một vài phần tử trùng lặp (2, 3 và 5 xuất hiện nhiều hơn một lần). - Khi in
my_set
ra, ta thấy rằng Python tự động loại bỏ các phần tử trùng, chỉ giữ lại một bản sao duy nhất của mỗi giá trị. Đây là đặc điểm chính củaset
trong Python. - Trong Python,
set
hỗ trợ nhiều thao tác cơ bản để thay đổi, điều khiển các phần tử bên trongset
. Các thao tác này bao gồm thêm và xóa phần tử, kiểm tra sự tồn tại của một phần tử (membership
), và thực hiện các phép toán đặc trưng của tập hợp (set
) như hợp, giao, hiệu, và hiệu đối xứng.
Thêm phần tử vào set
Để thêm một phần tử vào set trong Python, bạn có thể sử dụng hàm add()
. Hàm add()
hữu ích khi bạn muốn bổ sung các phần tử mới vào một set đã có. Nếu phần tử đã có trong set, set sẽ không thay đổi. Ví dụ:
my_set = {1, 2, 3, 3} # Khởi tạo một set, lưu ý: set chỉ chứa phần tử độc nhất.
# Thêm phần tử 4 vào set.
my_set.add(4)
print(my_set)
Kết quả:
{1, 2, 3, 4}
Giải thích:
my_set = {1, 2, 3, 3}
: Dòng đầu tiên tạo một set có tênmy_set
chứa các số 1, 2, và 3 (lưu ý rằng số 3 xuất hiện hai lần nhưng trong set chỉ được tính một lần).my_set.add(4)
: thêm số 4 vàomy_set
.print(my_set)
: in ra set sau khi đã thêm, ta thấy có thêm số 4.
Xóa phần tử khỏi set
Bạn có thể xóa một phần tử khỏi set bằng cách sử dụng hàm remove()
. Cách làm này có ích khi bạn muốn loại bỏ các phần tử cụ thể khỏi set. Tuy nhiên, cần lưu ý, nếu phần tử không có trong set, remove()
sẽ gây ra lỗi KeyError. Ví dụ:
my_set = {1, 2, 3, 4}
# Xóa phần tử 3 khỏi set.
my_set.remove(3)
print(my_set)
Kết quả:
{1, 2, 4}
Giải thích:
my_set.remove(3)
: loại bỏ số 3 ra khỏi set.print(my_set)
: In ra set sau khi xóa.
Kiểm tra phần tử trong set
Set 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 set hay không. Bạn có thể sử dụng toán tử in
để thực hiện việc kiểm tra này. Toán tử in
trả về True nếu phần tử có trong set và False nếu không có. Ví dụ:
my_set = {1, 2, 3, 4} #khởi tạo set
if 2 in my_set:
print("Số 2 có trong set")
else:
print("Số 2 không có trong set")
Kết quả khi chạy đoạn code trên:
Số 2 có trong set
Giải thích:
my_set = {1, 2, 3, 4}
: Dòng này tạo một set trong Python có tên làmy_set
chứa các số nguyên 1, 2, 3 và 4.if 2 in my_set:
: Dòng này kiểm tra xem số 2 có phải là một phần tử củamy_set
hay không.- Nếu điều kiện
2 in my_set
làTrue
(tức là số 2 có trongmy_set
), chương trình sẽ in ra “Số 2 có trong set”. - Ngược lại, nếu điều kiện đó là
False
, chương trình sẽ in ra “Số 2 không có trong set”.
Các phép toán trên set
Set trong Python hỗ trợ nhiều phép toán khác nhau, giúp thao tác và so sánh các Set. Các phép toán này bao gồm hợp, giao, hiệu, hiệu đối xứng và kiểm tra tập con. Set đặc biệt hữu ích khi bạn cần làm việc với các tập hợp chứa 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.
- Hợp (Union): Kết hợp các phần tử từ cả hai Set bằng cách sử dụng hàm
union()
hoặc toán tử|
. - Giao (Intersection): Lấy các phần tử chung giữa hai Set bằng hàm
intersection()
hoặc toán tử&
. - Hiệu (Difference): Lấy các phần tử có trong Set này nhưng không có trong Set kia bằng hàm
difference()
hoặc toán tử-
. - Hiệu đối xứng (Symmetric Difference): Lấy các phần tử có trong một trong hai Set nhưng không có trong cả hai Set, sử dụng phương thức
symmetric_difference()
hoặc toán tử^
.
Set Comprehensions trong Python
Set comprehensions trong Python là một cách ngắn gọn để tạo các set dựa trên các đối tượng có thể lặp (iterable), tương tự như list comprehensions. Set comprehension được dùng để tạo ra các set bằng cách áp dụng một biểu thức cho mỗi phần tử trong một đối tượng có thể lặp.
Set comprehensions rất hữu ích khi bạn cần tạo một set từ kết quả của một phép toán hoặc khi lọc các phần tử từ một đối tượng có thể lặp khác.
Cú pháp
Cú pháp của set comprehensions tương tự như 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 {}
để biểu thị một set:
set_variable = {biểu_thức for phần_tử in đối_tượng_có_thể_lặp if điều_kiện}
Giải thích:
set_variable
: Tên biếnset
sẽ chứa kết quả.biểu_thức
: Biểu thức được áp dụng cho mỗiphần_tử
.phần_tử
: Biến đại diện cho mỗi phần tử trongđối_tượng_có_thể_lặp
.đối_tượng_có_thể_lặp
: Một đối tượng có thể lặp (ví dụ:list
,tuple
,range
, …).điều_kiện
(tùy chọn): Biểu thức điều kiện để lọc các phần tử. Chỉ những phần tử nào thỏa mãn điều kiện mới được đưa vàoset
.
Ví dụ
Trong ví dụ sau, ta sẽ tạo một set trong Python chứa bình phương của các số từ 1 đến 5, sử dụng set comprehension:
binh_phuong_set = {x**2 for x in range(1, 6)}
print(binh_phuong_set)
Kết quả thu được là:
{1, 4, 9, 16, 25}
Giải thích:
{x**2 for x in range(1, 6)}
: là một set comprehension.x**2
: là biểu thức: tính bình phương củax
.for x in range(1, 6)
: duyệt qua các số từ 1 đến 5 (giá trị củax
sẽ lần lượt là 1, 2, 3, 4, 5).- Kết quả của biểu thức
x**2
được thêm vào set mới (lưu trong biếnbinh_phuong_set
). Vì là set, nên nếu có các giá trị trùng nhau (ví dụ bình phương của 2 và -2 đều là 4, nếu vòng lặp chạy đến giá trị -2 thì giá trị đó sẽ không được thêm vào set), set sẽ tự động loại bỏ, chỉ giữ lại một giá trị duy nhất.
Sử dụng set comprehension để lọc phần tử trong set
Bạn có thể thêm các câu lệnh điều kiện vào set comprehensions để lọc các phần tử dựa trên các tiêu chí nhất định. Chẳng hạn, để tạo một set chứa các số chẵn từ 1 đến 10, bạn có thể dùng set comprehension với một điều kiện if như sau:
even_set = {x for x in range(1, 11) if x % 2 == 0}
print(even_set)
Kết quả khi chạy đoạn mã trên sẽ là:
{2, 4, 6, 8, 10}
Giải thích:
{x for x in range(1, 11) if x % 2 == 0}
: Đây là một set comprehension.for x in range(1, 11)
: Vòng lặpfor
này duyệt qua các số từ 1 đến 10 (không bao gồm 11).if x % 2 == 0
: Với mỗi sốx
, điều kiện này kiểm tra xemx
có phải là số chẵn hay không (chia hết cho 2).x
: Nếux
là số chẵn,x
sẽ được thêm vào set kết quảeven_set
.
Set comprehensions lồng nhau
Set comprehensions cũng hỗ trợ các vòng lặp lồng nhau, cho phép bạn tạo các set 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ử. Ví dụ:
nested_set = {(x, y) for x in range(1, 3) for y in range(1, 3)}
print(nested_set)
Kết quả của đoạn code trên như sau:
{(1, 1), (1, 2), (2, 1), (2, 2)}
Giải thích:
{(x, y) for x in range(1,3) for y in range(1,3)}
:for x in range(1,3):
: Vòng lặpfor
này duyệt qua các số từ 1, 2 (không bao gồm 3).for y in range(1,3):
: Với giá trịx
nhận được, lại tiếp tục tạo vòng lặpfor
tương tự duyệt các giá trị từ 1, 2.(x, y)
: Giá trị này sẽ là một Tuple(x,y)
tương ứng với kết quả vòng lặp trên.
Frozen set trong Python
Trong Python, frozen set là một tập hợp không thể thay đổi chứa các phần tử duy nhất, tương tự như set thông thường nhưng với điểm khác biệt là frozen set không thể được sửa đổi sau khi đã tạo. Một khi đã được tạo, các phần tử bên trong frozen set không thể được thêm, xóa, hoặc thay đổi, khiến frozen set 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 thể thay đổi.
Bạn có thể tạo một frozen set trong Python bằng cách sử dụng hàm frozenset()
, truyền vào một đối tượng có thể lặp chứa các phần tử bạn muốn đưa vào frozen set.
Trong ví dụ sau, chúng ta tạo một frozen set chứa các số nguyên và sau đó thử thêm một phần tử vào frozen set này:
# Tạo một frozen set từ một list
my_frozen_set = frozenset([1, 2, 3, 2, 1]) # Các phần tử trùng lặp sẽ bị loại bỏ
print(my_frozen_set)
# Thử thêm một phần tử mới
# my_frozen_set.add(4)
Giải thích:
my_frozen_set = frozenset([1, 2, 3, 2, 1])
: Dòng này tạo một frozen set từ một List. Lưu ý là, giống như set thông thường, các giá trị trùng lặp (1
và2
xuất hiện hai lần) sẽ tự động bị loại, chỉ giữ lại một bản duy nhất trong frozen set.print(my_frozen_set)
: Dòng này in frozen set đã tạo. Bạn có thể chú ý là giá trị hiển thị không giữ nguyên giá trị ta vừa tạo.# my_frozen_set.add(4)
: Dòng code này đã được chú thích (bằng cách thêm#
ở đầu dòng), nghĩa là dòng code này sẽ không được chạy. Nếu bỏ dấu#
để chạy dòng này, Python sẽ báo lỗiAttributeError: 'frozenset' object has no attribute 'add'
. Thông báo lỗi này chỉ ra rằng đối tượngfrozenset
không có phương thức (hàm)add
, minh chứng cho tính không thể thay đổi (immutable) của frozen set. Việc set trong python có methodadd
và frozen set thì không.
Dịch vụ VPS Vietnix – Lựa chọn tối ưu cho website nhanh chóng và an toàn
Với dịch vụ VPS của Vietnix, bạn sẽ tận hưởng một nền tảng web nhanh chóng và ổn định, đảm bảo trang web luôn hoạt động mượt mà. Sử dụng ổ cứng SSD/NVMe Enterprise và CPU Intel Xeon, AMD, dịch vụ VPS này mang lại hiệu suất vượt trội, giúp website của bạn tải nhanh và đáp ứng mọi nhu cầu. Ngoài ra, giao diện quản trị dễ sử dụng cho phép bạn linh hoạt quản lý VPS, từ việc cài đặt lại hệ điều hành đến theo dõi tài nguyên hệ thống.
Dịch vụ VPS NVMe của Vietnix là lựa chọn lý tưởng cho những ai cần hiệu suất cực cao và tốc độ nhanh chóng. Với ổ cứng NVMe, tốc độ truy cập và xử lý dữ liệu nhanh gấp 10 lần so với SSD thông thường, giúp tăng cường trải nghiệm người dùng và tối ưu hóa thời gian tải trang. Được trang bị CPU Intel Platinum, dịch vụ này hỗ trợ xử lý đa nhiệm hiệu quả, đáp ứng mọi yêu cầu khắt khe về hiệu suất. Dịch vụ cũng cung cấp tính năng sao lưu tự động hàng tuần và dễ dàng phục hồi dữ liệu, giúp bạn an tâm hơn trong việc bảo vệ dữ liệu quan trọng.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh.
- Website: https://vietnix.vn/
Chúng ta vừa cùng nhau khám phá chi tiết về kiểu dữ liệu Set trong Python, từ khái niệm cơ bản, cách tạo, thêm, xóa, kiểm tra phần tử, đến các phép toán và Set Comprehensions nâng cao. Hy vọng rằng những kiến thức này sẽ giúp bạn hiểu rõ hơn về Set và ứng dụng chúng một cách hiệu quả trong các dự án lập trình của mình.
Mọi người cũng đọc