set

組み込みのセット型。セットは、一意の値(セットの要素 )の可変コレクションです。セットの型名"set"です。

セットは、値の挿入、削除、存在確認を行うための定数時間オペレーションを提供します。 セットはハッシュテーブルを使用して実装されるため、a 辞書のキーと同様に、セットの要素はハッシュ可能である必要があります。値は、辞書のキーとして使用できる場合にのみ、セットの要素として使用できます。

セットは、set()組み込み 関数を使用して作成できます。この関数は、オプションの引数( 反復可能オブジェクトである必要があります)の一意の要素を含む新しいセットを返します。引数なしで set() を呼び出すと、空のセットが作成されます。セットにはリテラル構文はありません。

in オペレーションと not in オペレーションは、値がセットに含まれているかどうかを確認します。

s = set(["a", "b", "c"])
"a" in s  # True
"z" in s  # False

セットは反復可能であるため、for ループ、リスト内包表記、反復可能オブジェクトを操作するさまざまな組み込み関数のオペランドとして使用できます。長さは len()組み込み関数を使用して取得できます。反復の順序は、要素がセットに最初に追加された順序です:

s = set(["z", "y", "z", "y"])
len(s)       # prints 2
s.add("x")
len(s)       # prints 3
for e in s:
    print e  # prints "z", "y", "x"

ブール値コンテキストで使用されるセットは、空でない場合にのみ true になります。

s = set()
"non-empty" if s else "empty"  # "empty"
t = set(["x", "y"])
"non-empty" if t else "empty"  # "non-empty"

セットは、==!= を使用して等しいかどうかを比較できます。セット s は、t が同じ 要素を含むセットである場合にのみ t と等しくなります。反復の順序は重要ではありません。特に、セットは要素のリストと等しくありません。 セットは他のセットに対して順序付けされていません。2 つのセットを比較しようとすると <<=>>= を使用して、またはセットの シーケンスを並べ替えようとすると、失敗します。

set() == set()              # True
set() != []                 # True
set([1, 2]) == set([2, 1])  # True
set([1, 2]) != [1, 2]       # True

2 つのセットに対する | オペレーションは、2 つのセットのユニオンを返します。これは、元のセットのいずれかまたは両方に含まれる要素を含むセットです。

set([1, 2]) | set([3, 2])  # set([1, 2, 3])

2 つのセットに対する & オペレーションは、2 つのセットの共通部分を返します。これは、元のセットの両方に含まれる要素のみを含むセットです。

set([1, 2]) & set([2, 3])  # set([2])
set([1, 2]) & set([3, 4])  # set()

2 つのセットに対する - オペレーションは、2 つのセットの差を返します。これは、左側のセットには含まれているが、右側のセットには含まれていない要素を含むセットです。

set([1, 2]) - set([2, 3])  # set([1])
set([1, 2]) - set([3, 4])  # set([1, 2])

2 つのセットに対する ^ オペレーションは、2 つのセットの対称差を返します。これは、元の 2 つのセットのいずれか一方にのみ含まれ、両方には含まれていない要素を含むセットです。

set([1, 2]) ^ set([2, 3])  # set([1, 3])
set([1, 2]) ^ set([3, 4])  # set([1, 2, 3, 4])

上記の各オペレーションでは、結果のセットの要素は 2 つのオペランド セットの順序を保持します。左側から抽出されたすべての要素は、右側にのみ存在する要素の前に並べられます。

対応する拡張代入 |=&=-=、 および ^= は、左側のセットをインプレースで変更します。

s = set([1, 2])
s |= set([2, 3, 4])     # s now equals set([1, 2, 3, 4])
s &= set([0, 1, 2, 3])  # s now equals set([1, 2, 3])
s -= set([0, 1])        # s now equals set([2, 3])
s ^= set([3, 4])        # s now equals set([2, 4])

Starlark のすべての可変値と同様に、セットはフリーズできます。フリーズすると、更新を試みる後続のオペレーションはすべて失敗します。

メンバー

追加

None set.add(element)

セットに要素を追加します。

セットにすでに存在する値を add してもかまいません。セットは変更されません。

セットに複数の要素を追加する必要がある場合は、update または the |= 拡張代入オペレーション。

パラメータ

パラメータ 説明
element 必須
追加する要素。

クリア

None set.clear()

セットのすべての要素を削除します。

set set.difference(*others)

このセットと他のセットの差を含む新しい可変セットを返します。

st がセットの場合、s.difference(t)s - t と同等です。ただし、- オペレーションでは両側がセットである必要がありますが、 difference メソッドではシーケンスと辞書も受け入れられます。

引数なしで difference を呼び出してもかまいません。セットのコピーが返されます。

たとえば、

set([1, 2, 3]).difference([2])             # set([1, 3])
set([1, 2, 3]).difference([0, 1], [3, 4])  # set([2])

パラメータ

パラメータ 説明
others 必須
ハッシュ可能な要素のコレクション。

difference_update

None set.difference_update(*others)

他のセットに含まれる要素をこのセットから削除します。

st がセットの場合、s.difference_update(t)s -= t と同等です。ただし、-= 拡張代入では両側がセットである必要がありますが、difference_update メソッドではシーケンスと辞書も受け入れられます。

引数なしで difference_update を呼び出してもかまいません。セットは変更されません。

たとえば、

s = set([1, 2, 3, 4])
s.difference_update([2])             # None; s is set([1, 3, 4])
s.difference_update([0, 1], [4, 5])  # None; s is set([3])

パラメータ

パラメータ 説明
others 必須
ハッシュ可能な要素のコレクション。

破棄

None set.discard(element)

要素が存在する場合は、セットから削除します。

セットに存在しない値を discard してもかまいません。セットは変更されません。存在しない要素を削除しようとしたときに失敗する場合は、代わりに removeを使用します。セットから複数の要素を削除する必要がある場合は、difference_update または -= 拡張代入オペレーションをご覧ください。

たとえば、

s = set(["x", "y"])
s.discard("y")  # None; s == set(["x"])
s.discard("y")  # None; s == set(["x"])

パラメータ

パラメータ 説明
element 必須
破棄する要素。ハッシュ可能である必要があります。

交差点

set set.intersection(*others)

このセットと他のセットの共通部分を含む新しい可変セットを返します。

st がセットの場合、s.intersection(t)s & t と同等です。ただし、& オペレーションでは両側が セットである必要がありますが、intersection メソッドではシーケンスと辞書も受け入れられます。

引数なしで intersection を呼び出してもかまいません。セットのコピーが返されます。

たとえば、

set([1, 2]).intersection([2, 3])             # set([2])
set([1, 2, 3]).intersection([0, 1], [1, 2])  # set([1])

パラメータ

パラメータ 説明
others 必須
ハッシュ可能な要素のコレクション。

intersection_update

None set.intersection_update(*others)

他のセットに含まれていない要素をこのセットから削除します。

st がセットの場合、s.intersection_update(t)s &= t と同等です。ただし、&= 拡張 代入では両側がセットである必要がありますが、intersection_update メソッドではシーケンスと辞書も 受け入れられます。

引数なしで intersection_update を呼び出してもかまいません。セットは変更されません。

たとえば、

s = set([1, 2, 3, 4])
s.intersection_update([0, 1, 2])       # None; s is set([1, 2])
s.intersection_update([0, 1], [1, 2])  # None; s is set([1])

パラメータ

パラメータ 説明
others 必須
ハッシュ可能な要素のコレクション。

共通部分がない

bool set.isdisjoint(other)

このセットに他のセットと共通する要素がない場合は true を返します。

たとえば、

set([1, 2]).isdisjoint([3, 4])  # True
set().isdisjoint(set())         # True
set([1, 2]).isdisjoint([2, 3])  # False

パラメータ

パラメータ 説明
other 必須
ハッシュ可能な要素のコレクション。

サブセット

bool set.issubset(other)

このセットが別のセットのサブセットである場合は true を返します。

セットは常に自身のサブセットと見なされます。

たとえば、

set([1, 2]).issubset([1, 2, 3])  # True
set([1, 2]).issubset([1, 2])     # True
set([1, 2]).issubset([2, 3])     # False

パラメータ

パラメータ 説明
other 必須
ハッシュ可能な要素のコレクション。

スーパーセット

bool set.issuperset(other)

このセットが別のセットのスーパーセットである場合は true を返します。

セットは常に自身のスーパーセットと見なされます。

たとえば、

set([1, 2, 3]).issuperset([1, 2])     # True
set([1, 2, 3]).issuperset([1, 2, 3])  # True
set([1, 2, 3]).issuperset([2, 3, 4])  # False

パラメータ

パラメータ 説明
other 必須
ハッシュ可能な要素のコレクション。

ポップ

unknown set.pop()

セットの最初の要素(反復順序。要素がセットに最初に追加された順序)を削除して返します。

セットが空の場合は失敗します。

たとえば、

s = set([3, 1, 2])
s.pop()  # 3; s == set([1, 2])
s.pop()  # 1; s == set([2])
s.pop()  # 2; s == set()
s.pop()  # error: empty set

削除

None set.remove(element)

セットに存在する要素をセットから削除します。

要素がセットに存在しない場合、remove は失敗します。存在しない要素を削除しようとしたときに失敗しないようにする場合は、代わりに discard を使用します。セットから複数の要素を削除する必要がある場合は、 difference_update または -= 拡張 代入オペレーションをご覧ください。

パラメータ

パラメータ 説明
element 必須
削除する要素。セットの要素(ハッシュ可能)である必要があります。

symmetric_difference

set set.symmetric_difference(other)

このセットとハッシュ可能な要素の別のコレクションの対称差を含む新しい可変セットを返します。

st がセットの場合、s.symmetric_difference(t)s ^ t と同等です。ただし、^ オペレーションでは両側がセットである必要がありますが、symmetric_difference メソッドではシーケンスまたは辞書も受け入れられます。

たとえば、

set([1, 2]).symmetric_difference([2, 3])  # set([1, 3])

パラメータ

パラメータ 説明
other 必須
ハッシュ可能な要素のコレクション。

symmetric_difference_update

None set.symmetric_difference_update(other)

このセットとハッシュ可能な要素の別のコレクションの対称差を含む新しい可変セットを返します。

st がセットの場合、s.symmetric_difference_update(t) は `s ^= t` と同等です。ただし、`s ^= t; however, note that the ^=` 拡張代入では両側がセットである必要がありますが、symmetric_difference_update メソッドではシーケンスまたは辞書も受け入れられます。

たとえば、

s = set([1, 2])
s.symmetric_difference_update([2, 3])  # None; s == set([1, 3])

パラメータ

パラメータ 説明
other 必須
ハッシュ可能な要素のコレクション。

ユニオン

set set.union(*others)

このセットと他のセットのユニオンを含む新しい可変セットを返します。

st がセットの場合、s.union(t)s | t と同等です。ただし、| オペレーションでは両側がセットである必要がありますが、 union メソッドではシーケンスと辞書も受け入れられます。

引数なしで union を呼び出してもかまいません。セットのコピーが返されます。

たとえば、

set([1, 2]).union([2, 3])                    # set([1, 2, 3])
set([1, 2]).union([2, 3], {3: "a", 4: "b"})  # set([1, 2, 3, 4])

パラメータ

パラメータ 説明
others 必須
ハッシュ可能な要素のコレクション。

更新

None set.update(*others)

他のセットに含まれる要素をこのセットに追加します。

たとえば、

s = set()
s.update([1, 2])          # None; s is set([1, 2])
s.update([2, 3], [3, 4])  # None; s is set([1, 2, 3, 4])

st がセットの場合、s.update(t)s |= t と同等です。ただし、|= 拡張代入では両側 がセットである必要がありますが、update メソッドではシーケンスと辞書も受け入れられます。

引数なしで update を呼び出してもかまいません。セットは変更されません。

パラメータ

パラメータ 説明
others 必須
ハッシュ可能な要素のコレクション。