*Memo:
- My post explains a frozenset (1).
- My post explains a frozenset (3).
- My post explains a set (1).
- My post explains set and frozenset functions (1).
frozenset()
can create a frozenset with or without an iterable as shown below:
*Memo:
- The 1st argument is
iterable
(Optional-Default:()
-Type:Iterable):- Don't use
iterable=
.
- Don't use
# Empty frozenset
print(frozenset())
print(frozenset(()))
# frozenset()
print(frozenset([0, 1, 2, 3, 4])) # list
print(frozenset((0, 1, 2, 3, 4))) # tuple
print(frozenset(iter([0, 1, 2, 3, 4]))) # iterator
print(frozenset({0, 1, 2, 3, 4})) # set
print(frozenset(frozenset([0, 1, 2, 3, 4]))) # frozenset
print(frozenset(range(5))) # range
# frozenset({0, 1, 2, 3, 4})
print(frozenset({'name': 'John', 'age': 36})) # dict
print(frozenset({'name': 'John', 'age': 36}.keys())) # dict.keys()
# frozenset({'age', 'name'})
print(frozenset({'name': 'John', 'age': 36}.values())) # dict.values()
# frozenset({'John', 36})
print(frozenset({'name': 'John', 'age': 36}.items())) # dict.items()
# frozenset({('name', 'John'), ('age', 36)})
print(frozenset('Hello')) # str
# frozenset({'o', 'l', 'e', 'H'})
print(frozenset(b'Hello')) # bytes
print(frozenset(bytearray(b'Hello'))) # bytearray
# frozenset({72, 108, 101, 111})
A frozenset comprehension can create a frozenset as shown below:
<1D frozenset>:
sample = frozenset([0, 1, 2, 3, 4, 5, 6, 7])
A = frozenset(x**2 for x in sample)
print(A)
# frozenset({0, 1, 4, 36, 9, 16, 49, 25})
<2D frozenset>:
sample = frozenset([frozenset([0, 1, 2, 3]), frozenset([4, 5, 6, 7])])
A = frozenset(frozenset(y**2 for y in x) for x in sample)
print(A)
# frozenset({frozenset({16, 25, 36, 49}), frozenset({0, 1, 4, 9})})
<3D frozenset>:
sample = frozenset([frozenset([frozenset([0, 1]), frozenset([2, 3])]),
frozenset([frozenset([4, 5]), frozenset([6, 7])])])
A = frozenset(frozenset(frozenset(z**2 for z in y) for y in x) for x in sample)
print(A)
# frozenset({frozenset({frozenset({16, 25}), frozenset({49, 36})}),
# frozenset({frozenset({9, 4}), frozenset({0, 1})})})
A frozenset cannot be read by indexing and slicing and changed by indexing, slicing and a del statement as shown below:
*Memo:
- A
del
statement cannot remove zero or more elements from a frozenset by indexing and slicing but can remove one or more variables themselves.
A = frozenset([10, 20, 30, 40, 50, 60])
print(A[1], A[3:5])
# TypeError: 'frozenset' object is not subscriptable
A = frozenset([10, 20, 30, 40, 50, 60])
A[1] = 'X'
A[3:5] = ['Y', 'Z']
# TypeError: 'frozenset' object does not support item assignment
A = frozenset([10, 20, 30, 40, 50, 60])
del A[1], A[3:5]
# TypeError: 'frozenset' object does not support item deletion
A = frozenset([10, 20, 30, 40, 50, 60])
del A
print(A)
# NameError: name 'A' is not defined
If you really want to read or change a frozenset, use list() and frozenset()
as shown below:
A = frozenset([10, 20, 30, 40, 50, 60])
A = list(A)
print(A[1], A[3:5])
# 10 [20, 60]
A[1] = 'X'
A[3:5] = ['Y', 'Z']
A = frozenset(A)
print(A)
# frozenset({40, 'Y', 50, 'Z', 'X', 30})
A = frozenset([10, 20, 30, 40, 50, 60])
A = list(A)
del A[1], A[3:5]
A = frozenset(A)
print(A)
# frozenset({40, 50, 20})
Top comments (0)