Set オブジェクト¶
このセクションでは set と frozenset の公開 API について詳しく述べます。以降で説明していない機能は、抽象オブジェクトプロトコル (PyObject_CallMethod(), PyObject_RichCompareBool(), PyObject_Hash(), PyObject_Repr(), PyObject_IsTrue(), PyObject_Print(), PyObject_GetIter() を含む) か抽象数値プロトコル (PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(), PyNumber_Xor(), PyNumber_InPlaceAnd(), PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr(), PyNumber_InPlaceXor() を含む) を使って利用できます。
-
PySetObject¶ この
PyObjectを継承した型は、setとfrozenset両方の内部データを保存するのに用いられます。PyDictObjectと同じように、小さい集合(set)に対しては(タプルのように)固定サイズであり、そうでない集合に対しては(リストと同じように)可変長のメモリブロックを用います。この構造体のどのフィールドも、非公開で変更される可能性があると考えて下さい。すべてのアクセスは、構造体の中の値を直接操作するのではなく、ドキュメントされた API を用いて行うべきです。
-
PyTypeObject
PySet_Type¶ この
PyTypeObjectのインスタンスは、Python のset型を表します。
-
PyTypeObject
PyFrozenSet_Type¶ この
PyTypeObjectのインスタンスは、Python のfrozenset型を表します。
以降の型チェックマクロはすべての Python オブジェクトに対するポインタに対して動作します。同様に、コンストラクタはすべてのイテレート可能な Python オブジェクトに対して動作します。
-
int
PyAnySet_CheckExact(PyObject *p)¶ p が
setかfrozensetのどちらかのオブジェクトであるときに true を返します。サブタイプのオブジェクトは含みません。
-
PyObject*
PySet_New(PyObject *iterable)¶ - Return value: New reference.
iterable が返すオブジェクトを含む新しい
setを返します。 iterable が NULL のときは、空の set を返します。成功したら新しい set を、失敗したら NULL を返します。 iterable がイテレート可能でない場合は、TypeErrorを送出します。このコンストラクタは set をコピーするときにも使えます (c=set(s))。
-
PyObject*
PyFrozenSet_New(PyObject *iterable)¶ - Return value: New reference.
iterable が返すオブジェクトを含む新しい
frozensetを返します。 iterable が NULL のときは、空の frozenset を返します。成功時には新しい set を、失敗時には NULL を返します。 iterable がイテレート可能でない場合は、TypeErrorを送出します。
以降の関数やマクロは、 set と frozenset とそのサブタイプのインスタンスに対して利用できます。
-
Py_ssize_t
PySet_Size(PyObject *anyset)¶ setやfrozensetのオブジェクトの長さを返します。len(anyset)と同じです。 anyset がset、frozensetおよびそのサブタイプのオブジェクトでない場合は、PyExc_SystemErrorを送出します。
-
Py_ssize_t
PySet_GET_SIZE(PyObject *anyset)¶ エラーチェックを行わない、
PySet_Size()のマクロ形式。
-
int
PySet_Contains(PyObject *anyset, PyObject *key)¶ 見つかったら
1を、見つからなかったら0を、エラーが発生した場合は-1を返します。 Python の__contains__()メソッドと違って、この関数は非ハッシュ set を一時的な frozenset に自動で変換しません。 key がハッシュ可能で無い場合、TypeErrorを送出します。 anyset がset,frozenset及びそのサブタイプのオブジェクトで無い場合はPyExc_SystemErrorを送出します。
-
int
PySet_Add(PyObject *set, PyObject *key)¶ setのインスタンスに key を追加します。frozensetに対しても動作します (PyTuple_SetItem()のように、他のコードに見える前の新しい frozenset の値を埋めるために使用できます)。 成功したら0を、失敗したら-1を返します。 key がハッシュ可能でない場合は、TypeErrorを送出します。 set を大きくする余裕がない場合は、MemoryErrorを送出します。 set がsetかそのサブタイプのインスタンスでない場合は、SystemErrorを送出します。
以降の関数は、 set とそのサブタイプに対して利用可能です。 frozenset とそのサブタイプには利用できません。
-
int
PySet_Discard(PyObject *set, PyObject *key)¶ key が見つかって、値を削除したら
1を返します。 見つからなかったら (何もせずに)0を返します。 エラーが発生した場合は-1を返します。 key が無くてもKeyErrorを送出しません。 key がハッシュ可能でない場合はTypeErrorを送出します。 Python のdiscard()メソッドと違って、この関数は非ハッシュ set を一時的な frozenset に変換しません。 set がsetかそのサブタイプのインスタンスでないときは、PyExc_SystemErrorを送出します。
-
PyObject*
PySet_Pop(PyObject *set)¶ - Return value: New reference.
set の中の要素のどれかに対する新しい参照を返し、そのオブジェクトを set から削除します。失敗したら NULL を返します。 set が空の場合には
KeyErrorを送出します。 set がsetとそのサブタイプのインスタンスでない場合は、SystemErrorを送出します。
-
int
PySet_ClearFreeList()¶ free list をクリアします。解放された要素数を返します。
バージョン 3.3 で追加.
