Python-data-structure-python-sets

提供:Dev Guides
移動先:案内検索

Python-セット

数学的には、セットは特定の順序ではないアイテムのコレクションです。 Pythonセットは、この数学的な定義に似ていますが、以下の追加条件があります。

  • セット内の要素は重複できません。
  • セット内の要素は不変(変更不可)ですが、セット全体は変更可能です。
  • Pythonセットのどの要素にもインデックスが付加されていません。 そのため、インデックス付けやスライス操作はサポートされていません。

セット操作

Pythonのセットは、通常、結合、交差、差、補数などの数学演算に使用されます。 セットを作成し、その要素にアクセスして、以下に示すようにこれらの数学演算を実行できます。

セットを作成する

セットを作成するには、set()関数を使用するか、すべての要素を中括弧のペア内に配置します。

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
Months={"Jan","Feb","Mar"}
Dates={21,22,17}
print(Days)
print(Months)
print(Dates)

上記のコードが実行されると、次の結果が生成されます。 結果の要素の順序がどのように変更されたかに注意してください。

set(['Wed', 'Sun', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])
set(['Jan', 'Mar', 'Feb'])
set([17, 21, 22])

セット内の値へのアクセス

セット内の個々の値にアクセスすることはできません。 上記のように、すべての要素に一緒にしかアクセスできません。 ただし、セットをループして個々の要素のリストを取得することもできます。

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])

for d in Days:
    print(d)

上記のコードが実行されると、次の結果が生成されます。

Wed
Sun
Fri
Tue
Mon
Thu
Sat

セットへのアイテムの追加

add()メソッドを使用して、セットに要素を追加できます。 ここでも説明したように、新しく追加された要素には特定のインデックスが付加されていません。

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat"])

Days.add("Sun")
print(Days)

上記のコードが実行されると、次の結果が生成されます。

set(['Wed', 'Sun', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])

セットからアイテムを削除する

discard()メソッドを使用して、セットから要素を削除できます。 ここでも説明したように、新しく追加された要素には特定のインデックスが付加されていません。

Days=set(["Mon","Tue","Wed","Thu","Fri","Sat"])

Days.discard("Sun")
print(Days)

上記のコードが実行されると、次の結果が生成されます。

set(['Wed', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])

セットの連合

2つのセットの和集合演算により、両方のセットのすべての個別の要素を含む新しいセットが生成されます。 以下の例では、要素「Wed」が両方のセットに存在します。

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
AllDays = DaysA|DaysB
print(AllDays)

上記のコードが実行されると、次の結果が生成されます。 結果には「水」が1つしかないことに注意してください。

set(['Wed', 'Fri', 'Tue', 'Mon', 'Thu', 'Sat'])

セットの交差点

2つのセットの交差演算により、両方のセットの共通要素のみを含む新しいセットが生成されます。 以下の例では、要素「Wed」が両方のセットに存在します。

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
AllDays = DaysA & DaysB
print(AllDays)

上記のコードが実行されると、次の結果が生成されます。 結果には「水」が1つしかないことに注意してください。

set(['Wed'])

セットの違い

2つのセットの差分演算は、最初のセットの要素のみを含み、2番目のセットの要素を含まない新しいセットを生成します。 以下の例では、要素「Wed」が両方のセットに存在するため、結果セットには見つかりません。

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Wed","Thu","Fri","Sat","Sun"])
AllDays = DaysA - DaysB
print(AllDays)

上記のコードが実行されると、次の結果が生成されます。 結果には「水」が1つしかないことに注意してください。

set(['Mon', 'Tue'])

セットを比較

特定のセットが別のセットのサブセットまたはスーパーセットであるかどうかを確認できます。 結果は、セットに存在する要素に応じてTrueまたはFalseになります。

DaysA = set(["Mon","Tue","Wed"])
DaysB = set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun"])
SubsetRes = DaysA <= DaysB
SupersetRes = DaysB >= DaysA
print(SubsetRes)
print(SupersetRes)

上記のコードが実行されると、次の結果が生成されます。

True
True