set

問題を報告する ソースを表示 Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

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

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

セットは set() 組み込み関数を使用して構築できます。この関数は、オプションの引数(iterable である必要があります)の一意の要素を含む新しいセットを返します。引数なしで 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 つのセットの共通部分を返します。つまり、元の 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 または |= 拡張代入演算子をご覧ください。

パラメータ

パラメータ 説明
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 必須
ハッシュ可能な要素のセット、シーケンス、または辞書。

isdisjoint

bool set.isdisjoint(other)

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

たとえば、

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

パラメータ

パラメータ 説明
other 必須
セット、ハッシュ可能な要素のシーケンス、または辞書。

issubset

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 必須
セット、ハッシュ可能な要素のシーケンス、または辞書。

issuperset

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; 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 必須
ハッシュ可能な要素のセット、シーケンス、または辞書。

update

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 必須
ハッシュ可能な要素のセット、シーケンス、または辞書。