4.1 Lấy tập con theo quy tắc
Tập con là tập hợp mà tất cả phần tử của nó nằm trong một tập hợp lớn hơn. Trong Python, có một số phương pháp và toán tử tích hợp để làm việc với tập con. Dưới đây, mình sẽ chỉ bạn cách lấy tập con, cách kiểm tra xem một tập hợp có phải là tập con của tập hợp khác không, và cách sử dụng những kiến thức này trong các tình huống khác nhau.
Sử dụng vòng lặp for
Bạn có thể tạo một tập hợp rỗng và thêm vào các phần tử thỏa mãn điều kiện bằng cách sử dụng vòng lặp for.
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set()
for x in my_set:
if x % 2 == 0:
even_set.add(x)
print(even_set) # Kết quả: {2, 4, 6, 8, 10}
Đây là cách đơn giản và rõ ràng nhất để tạo tập con. Nhưng còn có một số cách khác gọn hơn nữa.
Sử dụng hàm filter()
Hàm filter() áp dụng một hàm cho từng phần tử và chỉ trả về những phần tử mà hàm trả về True. Kết quả cần được chuyển đổi về dạng tập hợp.
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = set(filter(lambda x: x % 2 == 0, my_set))
print(even_set) # Kết quả: {2, 4, 6, 8, 10}
Bên trong hàm filter() sử dụng biểu thức lambda – cách ngắn gọn để đặt một hàm phụ hoặc quy tắc lọc. Về lambda mình sẽ nói thêm sau vài bài giảng nữa.
4.2 Sử dụng generators cho tập hợp
Nhớ List Comprehension chứ? Khi ta đặt trong ngoặc vuông cách nhanh chóng để tạo ra danh sách và các phần tử của nó? Công cụ cú pháp này có dạng như sau:
[biểu thức for biến in dãy tuần tự]
Ở đâu:
-
biến— định danh của một biến nào đó, -
dãy tuần tự— dãy giá trị mà biến đó nhận (có thể là danh sách, chuỗi hoặc đối tượng nhận từ hàmrange), -
biểu thức— một số biểu thức, thường phụ thuộc vào biến sử dụng trong generator, mà sẽ được điền vào các phần tử của danh sách.
Với tập hợp có hàm tương tự, nhưng cần dùng ngoặc nhọn:
{biểu thức for biến in dãy tuần tự}
Generators cho tập hợp cho phép dễ dàng và ngắn gọn tạo ra các tập hợp mới dựa trên tập hợp có sẵn, áp dụng các điều kiện lọc.
Như vầy có thể chọn chỉ các phần tử chẵn từ tập hợp:
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_set = {x for x in my_set if x % 2 == 0}
print(even_set) # Kết quả: {2, 4, 6, 8, 10}
Còn đây là chỉ các chuỗi:
my_set = {1, 2, 3, 4, 5, 6, 7, 8, 9, "apple", "banana"}
even_set = {x for x in my_set if type(x) == str}
print(even_set) # Kết quả: {"apple", "banana"}
4.3 Kiểm tra sự có mặt của phần tử
Một trong những thao tác chính có thể thực hiện với tập hợp là kiểm tra sự có mặt của phần tử trong tập hợp. Trong Python có một số cách để làm điều này. Hãy xem xét các phương pháp khác nhau để kiểm tra xem phần tử có mặt trong tập hợp hay không.
Sử dụng toán tử in
Cách phổ biến và tiện lợi nhất để kiểm tra sự có mặt của phần tử trong tập hợp là sử dụng toán tử in. Phương pháp này trả về True nếu phần tử có mặt trong tập hợp, và False nếu không.
my_set = {1, 2, 3, 4, 5}
print(3 in my_set) # Kết quả: True
print(6 in my_set) # Kết quả: False
Sử dụng toán tử not in
Toán tử not in là đối diện của toán tử in và sử dụng để kiểm tra xem phần tử không có mặt trong tập hợp. Nó trả về True nếu phần tử không có trong tập hợp, và False nếu có.
my_set = {1, 2, 3, 4, 5}
print(6 not in my_set) # Kết quả: True
print(3 not in my_set) # Kết quả: False
Sử dụng vòng lặp
Mặc dù việc sử dụng vòng lặp để kiểm tra sự có mặt của phần tử trong tập hợp không phải là cách hiệu quả nhất, nhưng nó có thể hữu ích trong các tình huống mà bạn làm việc với các cấu trúc dữ liệu phức tạp hơn hoặc thực hiện các thao tác bổ sung.
my_set = {1, 2, 3, 4, 5}
element = 3
found = False
for item in my_set:
if item == element:
found = True
break
print(found) # Kết quả: True
4.4 Kiểm tra tính lồng ghép của tập hợp
Python cung cấp toán tử <= và phương thức issubset() để kiểm tra xem một tập hợp có phải là tập con của tập hợp khác không.
Sử dụng toán tử <=
Toán tử <= cho phép dễ dàng kiểm tra xem một tập hợp có phải là tập con của tập hợp khác không.
set_a = {1, 2, 3}
set_b = {1, 2, 3, 4, 5}
print(set_a <= set_b) # Kết quả: True
print(set_b <= set_a) # Kết quả: False
Sử dụng phương thức issubset()
Phương thức issubset() thực hiện cùng chức năng như toán tử <= và trả về True, nếu tất cả phần tử của một tập hợp nằm trong tập hợp khác.
set_a = {1, 2, 3}
set_b = {1, 2, 3, 4, 5}
print(set_a.issubset(set_b)) # Kết quả: True
print(set_b.issubset(set_a)) # Kết quả: False
Kiểm tra trên tập hợp cha
Tương tự như tập con, bạn có thể kiểm tra xem một tập hợp có phải là tập hợp cha của tập hợp khác hay không, bằng cách sử dụng toán tử >= và phương thức issuperset().
Sử dụng toán tử >=
set_a = {1, 2, 3, 4, 5}
set_b = {1, 2, 3}
print(set_a >= set_b) # Kết quả: True
print(set_b >= set_a) # Kết quả: False
Sử dụng phương thức issuperset()
set_a = {1, 2, 3, 4, 5}
set_b = {1, 2, 3}
print(set_a.issuperset(set_b)) # Kết quả: True
print(set_b.issuperset(set_a)) # Kết quả: False
GO TO FULL VERSION