8.1 set-tuple
Bộ sưu tập frozenset là phiên bản không thể thay đổi của set. Nó cung cấp tất cả các khả năng của tập hợp, nhưng không cho phép thay đổi các phần tử sau khi tạo. frozenset hữu ích trong các tình huống, khi cần lưu trữ các phần tử duy nhất và đảm bảo rằng tập hợp sẽ không bị thay đổi.
Tạo frozenset
Để tạo frozenset có thể sử dụng hàm frozenset(), truyền cho nó một đối tượng có thể lặp (danh sách, tuple, chuỗi, v.v.).
Ví dụ:
Tạo frozenset từ danh sách
# Tạo frozenset từ danh sách
fset1 = frozenset([1, 2, 3, 4])
print(fset1) # Kết quả: frozenset({1, 2, 3, 4})
Tạo frozenset từ chuỗi
# Tạo frozenset từ chuỗi
fset2 = frozenset("hello")
print(fset2) # Kết quả: frozenset({'h', 'e', 'l', 'o'})
Tạo frozenset rỗng
# Tạo frozenset rỗng
fset3 = frozenset()
print(fset3) # Kết quả: frozenset()
8.2 Các phương thức chính frozenset
frozenset hỗ trợ hầu hết các phương thức có sẵn cho tập hợp có thể thay đổi (set), nhưng vì không thể thay đổi nên các phương thức thay đổi tập hợp không có sẵn.
Ví dụ:
Hợp của tập hợp (union)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# Hợp của tập hợp (union)
print(fset1 | fset2) # Kết quả: frozenset({1, 2, 3, 4, 5, 6})
print(fset1.union(fset2)) # Kết quả: frozenset({1, 2, 3, 4, 5, 6})
Giao của tập hợp (intersection)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# Giao của tập hợp (intersection)
print(fset1 & fset2) # Kết quả: frozenset({3, 4})
print(fset1.intersection(fset2)) # Kết quả: frozenset({3, 4})
Hiệu của tập hợp (difference)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# Hiệu của tập hợp (difference)
print(fset1 - fset2) # Kết quả: frozenset({1, 2})
print(fset1.difference(fset2)) # Kết quả: frozenset({1, 2})
Hiệu đối xứng (symmetric difference)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# Hiệu đối xứng (symmetric difference)
print(fset1 ^ fset2) # Kết quả: frozenset({1, 2, 5, 6})
print(fset1.symmetric_difference(fset2)) # Kết quả: frozenset({1, 2, 5, 6})
8.3 Ứng dụng của frozenset
frozenset hữu ích trong các tình huống sau:
Sử dụng làm khóa trong từ điển:
Vì frozenset không thể thay đổi, có thể sử dụng nó làm khóa trong từ điển.
fset1 = frozenset([1, 2, 3])
fset2 = frozenset([3, 4, 5])
d = {fset1: "first", fset2: "second"}
print(d) # Kết quả: {frozenset({1, 2, 3}): 'first', frozenset({3, 4, 5}): 'second'}
Lưu trữ tập hợp không thể thay đổi:
Nếu cần tạo tập hợp các phần tử duy nhất, mà không thay đổi trong tương lai, frozenset — là một lựa chọn tuyệt vời.
Bảo mật dữ liệu:
Sử dụng frozenset đảm bảo rằng dữ liệu sẽ không bị thay đổi ngẫu nhiên trong quá trình thực thi chương trình.
GO TO FULL VERSION