8.1 setタプル
コレクション frozenset
は
不変の set
のアナログです。これによりすべてのsetの機能を利用できるけど、
要素を作成後に変更することができません。frozenset
はユニークな要素を保存し、
セットが変更されないことを保証したい場合に便利です。
frozenset
の作成
frozenset
を作成するには、frozenset()
関数を使用して、
イテラブルなオブジェクト(リスト、タプル、文字列など)を渡します。
例:
リストからfrozenset
を作成
# リストからfrozensetを作成
fset1 = frozenset([1, 2, 3, 4])
print(fset1) # 出力: frozenset({1, 2, 3, 4})
文字列からfrozenset
を作成
# 文字列からfrozensetを作成
fset2 = frozenset("hello")
print(fset2) # 出力: frozenset({'h', 'e', 'l', 'o'})
空のfrozenset
を作成
# 空のfrozensetを作成
fset3 = frozenset()
print(fset3) # 出力: frozenset()
8.2 frozenset
の主要なメソッド
frozenset
は可変集合 (set)
で利用可能なほとんどのメソッドをサポートしていますが、
不変であるため、集合を変更するメソッドは使用できません。
例:
集合の結合 (union)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# 集合の結合 (union)
print(fset1 | fset2) # 出力: frozenset({1, 2, 3, 4, 5, 6})
print(fset1.union(fset2)) # 出力: frozenset({1, 2, 3, 4, 5, 6})
集合の共通部分 (intersection)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# 集合の共通部分 (intersection)
print(fset1 & fset2) # 出力: frozenset({3, 4})
print(fset1.intersection(fset2)) # 出力: frozenset({3, 4})
集合の差 (difference)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# 集合の差 (difference)
print(fset1 - fset2) # 出力: frozenset({1, 2})
print(fset1.difference(fset2)) # 出力: frozenset({1, 2})
対称差 (symmetric difference)
fset1 = frozenset([1, 2, 3, 4])
fset2 = frozenset([3, 4, 5, 6])
# 対称差 (symmetric difference)
print(fset1 ^ fset2) # 出力: frozenset({1, 2, 5, 6})
print(fset1.symmetric_difference(fset2)) # 出力: frozenset({1, 2, 5, 6})
8.3 frozenset
の適用
frozenset
は次のような状況で便利です:
辞書でキーとして使用:
frozenset
は不変なので、辞書でキーとして使うことができます。
fset1 = frozenset([1, 2, 3])
fset2 = frozenset([3, 4, 5])
d = {fset1: "first", fset2: "second"}
print(d) # 出力: {frozenset({1, 2, 3}): 'first', frozenset({3, 4, 5}): 'second'}
不変の集合を保存:
ユニークな要素の集合を作成して、後で変更しない必要がある場合、frozenset
は素晴らしい選択です。
データの安全性:
frozenset
を使うことで、プログラムの実行中にデータが誤って変更されないことを保証できます。
GO TO FULL VERSION