ウェブサイト検索

Python Set/Frozenset データ構造を学ぶ – パート 4


Python データ構造シリーズのこのパート 4 では、セットとは何か、Python の他のデータ構造との違い、セット オブジェクトの作成方法、セット オブジェクトの削除方法、セット オブジェクトのメソッドについて説明します。 。

  • セット オブジェクトは、個別のハッシュ可能なオブジェクトの順序付けされていないコレクションです。
  • Set は、重複したアイテムをオブジェクトから自動的に削除します。
  • セット オブジェクトには順序がないため、インデックス付けとスライス操作はサポートされません。

現在、2 つの組み込みセット タイプがあります。

  1. セット – 可変であるため、ハッシュ値を持たず、辞書キーまたは別のセットの要素として使用できません。
  2. frozenset – 不変かつハッシュ可能 – 作成後にその内容を変更することはできません。したがって、辞書キーとして、または別のセットの要素として使用できます。

セットオブジェクトの構築

コンストラクター メソッド “set()” を使用するか、要素 “{a,b,c}” をカンマで区切った中括弧を使用して、セットを作成します。

注意: 辞書オブジェクトが作成されるため、空の中括弧を使用して set オブジェクトを構築することはできません。

セットメソッド

組み込みの「dir()」 関数を使用して、利用可能な設定メソッドと属性をリストします。

要素を Set オブジェクトに追加する

すでに述べたように、set は可変型です。セットオブジェクトを作成したら、追加、削除、更新できます。

2 つのセットメソッド追加更新について説明します。

  • add(elem) メソッド – このメソッドは、セット オブジェクトに単一の要素を追加します。
  • update(*others) メソッド – このメソッドは、複数の要素をセット オブジェクトに追加します。 update メソッドの引数として可変/不変オブジェクトを渡すことができます。

: 重複は自動的に削除されます。

セットオブジェクトからの要素の削除/クリア

他のデータ構造のトピック (リスト、タプル、ディクショナリ) で以前見たように、set の場合も、組み込みキーワード “del” を使用して、名前空間から set オブジェクトを削除できます (つまり、 記憶)。

以下に要素を削除する set オブジェクトのメソッドを示します。

  • clear() – すべての要素をクリアしてセットを空にします。このclear() メソッドは、同じ機能を提供する他のデータ構造でも使用できます。
  • pop() – 任意の要素を削除します。
  • discard(elem) – 設定されたオブジェクト内に項目が見つからない場合、「discard()」 メソッドはエラーを発生させません。
  • remove(elem)「discard()」 メソッドと同じですが、項目が見つからない場合は KeyError が発生します。

集合演算

Set は、交差、和集合、差分、対称差分などの数学演算を実行するメソッドを提供します。高校時代に覚えた「ベン図」を覚えていますか?

数学的演算がどのように実行されるかについて、以下のメソッドを見ていきます。

  • 連合
  • 交差点
  • 交差点更新
  • 対称差分
  • 対称差分更新
  • 違い
  • 違い_更新
  • ばらばらです
  • サブセット
  • スーパーセットです

和集合、交差、差分、対称差分

  • union(*other) – セットとその他すべての要素を含む新しいセットを返します。
  • intersection(*other) – セットとその他すべてに共通の要素を含む新しいセットを返します。
  • difference(*others) – セット内に他の要素にはない要素を含む新しいセットを返します。
  • symmetric_difference(other) – セットまたはその他のいずれか (両方ではない) の要素を含む新しいセットを返します。

交差点_更新

intersection_update(*others) – セット内に見つかった要素のみを保持し、その他はすべて保持してセットを更新します。

差分更新

difference_update(*others) – セットを更新し、その中に見つかった要素のみを保持し、その他すべてを保持します。

対称差分更新

symmetric_difference_update(other) – セットを更新し、両方のセットではなく、どちらかのセットにある要素のみを保持します。

Isdisjoint、Issubset、Issuperset

  • isdisjoint(other) – セットに他の要素と共通の要素がない場合、True を返します。集合が素であるのは、その集合が空の集合である場合に限ります。
  • issubset() – セット内のすべての要素が別の要素にあるかどうかをテストします。
  • issuperset() – 他の要素のすべての要素がセット内にあるかどうかをテストします。

Copy() メソッド

copy() メソッドを使用して、既存のセット オブジェクトの同一のコピーを作成できます。このメソッドは、リスト、辞書などの他のデータ構造タイプにも使用できます。

組み込みの「del」 キーワードを使用して、名前空間から設定オブジェクトを削除します。

アナと雪の女王セット

  • 凍結セットは不変型です。構築後は、リストの要素を追加、削除、更新することはできません。
  • 不変である凍結セットはハッシュ可能であり、別のセット オブジェクトの辞書または要素の「キー」として使用できます。
  • フローズン セットは「frozenset()」 関数を使用して構築されます。
  • フローズン セットは、union()、intersection、copy()、isdisjoint() などの「set」と比較して同じメソッドのセットを提供します。

まとめ

この記事では、セットとは何か、セットと凍結セットの違い、セット要素の作成方法とアクセス方法、セットメソッドなどについて説明しました。