Python frozenset (不変集合)
1. frozenset とは
frozenset() 関数は、変更不可能な(イミュータブルな)frozenset オブジェクトを返します。これは Python の set オブジェクトに似ていますが、一度作成すると要素の変更、追加、削除ができないという特徴があります。
2. 構文 (Syntax)
frozenset() の基本的な書き方は以下の通りです。
frozenset(iterable)
2.1 パラメータ値
| パラメータ | 説明 |
|---|---|
| iterable | イテラブル(反復可能)なオブジェクト。リスト、セット、タプルなど、反復可能なオブジェクトを指定します。 |
3. コード例
リストを frozenset に変換し、その内容を表示するサンプルコードです。
mylist = ['apple', 'banana', 'cherry']
x = frozenset(mylist)
# frozenset オブジェクトを表示
print(x)frozenset はイミュータブルであるため、以下のようにインデックスを指定して要素を変更しようとするとエラーが発生します。
mylist = ['apple', 'banana', 'cherry']
x = frozenset(mylist)
# 要素の変更を試みる(この操作は TypeError を引き起こします)
# x[1] = "strawberry"4. 利用可能なメソッド
frozenset は要素の変更ができないため、add() や remove() といった破壊的なメソッド(更新用メソッド)は持ちません。しかし、集合演算を行って新しいセットを生成するための以下のメソッドが利用可能です。
| メソッド | 説明 |
|---|---|
| copy() | セットのコピーを返します。 |
| difference() | 2 つ以上のセットの差集合を含む新しいセットを返します。 |
| intersection() | 2 つのセットの積集合(共通部分)を含む新しいセットを返します。 |
| isdisjoint() | 2 つのセットに共通項目がないかどうかを判定します。 |
| issubset() | 別のセットにこのセットが含まれているかどうか(部分集合か)を判定します。 |
| issuperset() | このセットに別のセットが含まれているかどうか(上位集合か)を判定します。 |
| symmetric_difference() | 2 つのセットの対称差(どちらか一方のみに含まれる要素)を含む新しいセットを返します。 |
| union() | セットの和集合を含む新しいセットを返します。 |