Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのfrozenset()関数とは?リストをイミュータブルに変換する方法を解説

Pythonのfrozenset()関数は、変更可能(ミュータブル)なリストを変更不可(イミュータブル)なオブジェクトへ変換するために使われます。たとえば、最初は要素を自由に書き換えられるリストを作成したものの、処理の途中からは要素の変更を禁止したいといったケースがあります。このような場面でfrozenset()関数を適用すれば、それ以降の意図しない変更を防ぐことができます。

構文

frozenset(iterable_object_name)

frozenset()には、リスト・タプル・文字列などのイテラブルなオブジェクトを渡します。戻り値は変更不能なセット(frozensetオブジェクト)です。

以下の例では、まずリストを作成して要素を変更し、その結果を出力します。続いてfrozenset()関数を適用した後、もう一度要素を変更しようとします。すると2段階目でエラーが発生し、オブジェクトがそれ以上変更できないことが示されます。

サンプルコード

# frozenset()適用前
some_days = ["Mom","Tue","Wed","Thu"]
# 要素を変更
some_days[2]="Fri"
print("some_days =",some_days)
# frozenset()を適用
fixed_days=frozenset(some_days)
print("fixed_days= ",fixed_days)
# frozensetの要素を変更しようとする
fixed_days[2]="Wed"

実行結果

上記のコードを実行すると、次のような出力が得られます。

some_days = ['Mom', 'Tue', 'Fri', 'Thu']
Traceback (most recent call last):
fixed_days= frozenset({'Thu', 'Mom', 'Fri', 'Tue'})
File "/py3.py", line 14, in
fixed_days[2]="Wed"
TypeError: 'frozenset' object does not support item assignment

実行結果を見ると、frozenset()を適用する前のリストsome_daysは要素の変更("Wed""Fri")が成功しています。一方、frozenset化したfixed_daysに対して要素を代入しようとすると、TypeError: 'frozenset' object does not support item assignmentというエラーが発生し、変更が拒否されていることがわかります。

frozensetの主な特徴

  • イテラブルなオブジェクトを受け取り、変更不能なセットを返します。
  • セットの一種のため、要素の順序は保持されず、重複する要素は自動的に削除されます。
  • ハッシュ可能(hashable)であるため、辞書のキーや、別のsetの要素として利用できます。
  • add()remove()といった変更系メソッドを持たず、要素の追加・削除・更新は一切できません。

このように、データを固定値として扱いたい場合や、誤って上書きされるのを防ぎたい場合に、frozenset()は安全なデータ保護の手段として有効です。

  1. 【初心者向け】Pythonのissuperset()メソッドの使い方をわかりやすく解説

    はじめにこの記事では、Pythonのissuperset()メソッドについて、基本的な仕組みから実際のコード例まで詳しく解説します。issuperset()は、セット(集合)に対して使用できるメソッドで、引数として渡されたセットのすべての要素が、呼び出し元のセットに含まれているかどうかを判定します。呼び出し元のセットBが、引数のセットAのすべての要素を含んでいる場合 → True を返すセットAの要素がすべてBに含まれていない場合 → False を返すつまり、「BがAの上位集合(スーパーセット)であるかどうか」を判定するためのメソッドです。基本構文B.issuperset(A)この式は、Bが

  2. PythonでQuine(クワイン)プログラムを書いてみよう

    「Quine(クワイン)」とは、入力を一切受け取らずに、自分自身のソースコードを出力する特殊なプログラムのことです。一見すると不思議な自己言及的な仕組みですが、実装にはいくつかの厳格なルールがあります。最も重要な条件は、プログラム内部からソースコードファイルを読み込んではいけないという点です。つまり、純粋にコード自身の論理だけで自分の内容を再現しなければなりません。 サンプルコード Pythonでは、わずか1行でQuineを実現できます。 a=a=%r;print (a%%a);print (a%a) 実行結果 a=a=%r;print (a%%a);print (a%a) ご覧のとお