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() を含む) を使って利用できます。
-
type PySetObject¶
この
PyObjectを継承した型は、setとfrozenset両方の内部データを保存するのに用いられます。PyDictObjectと同じように、小さい集合(set)に対しては(タプルのように)固定サイズであり、そうでない集合に対しては(リストと同じように)可変長のメモリブロックを用います。この構造体のどのフィールドも、公開されていると考えるべきではなく、変更される可能性があります。すべてのアクセスは、構造体の中の値を直接操作するのではなく、ドキュメントされた API を用いて行うべきです。
-
PyTypeObject PySet_Type¶
- 次に属します: Stable ABI.
この
PyTypeObjectのインスタンスは、Python のset型を表します。
-
PyTypeObject PyFrozenSet_Type¶
- 次に属します: Stable ABI.
この
PyTypeObjectのインスタンスは、Python のfrozenset型を表します。
以降の型チェックマクロはすべての Python オブジェクトに対するポインタに対して動作します。同様に、コンストラクタはすべてのイテレート可能な Python オブジェクトに対して動作します。
-
int PyAnySet_Check(PyObject *p)¶
p が
setかfrozenset、あるいはそのサブタイプのオブジェクトであれば、true を返します。この関数は常に成功します。
-
int PySet_CheckExact(PyObject *p)¶
p が
setオブジェクトだがサブタイプのインスタンスでない場合に真を返します。この関数は常に成功します。Added in version 3.10.
-
int PyAnySet_CheckExact(PyObject *p)¶
p が
setかfrozensetのどちらかのオブジェクトであるときに true を返します。サブタイプのオブジェクトは含みません。この関数は常に成功します。
-
int PyFrozenSet_CheckExact(PyObject *p)¶
p が
frozensetオブジェクトだがサブタイプのインスタンスでない場合に真を返します。この関数は常に成功します。
-
PyObject *PySet_New(PyObject *iterable)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
iterable が返すオブジェクトを含む新しい
setを返します。 iterable がNULLのときは、空の set を返します。 成功したら新しい set を、失敗したらNULLを返します。 iterable がイテレート可能でない場合は、TypeErrorを送出します。 このコンストラクタは set をコピーするときにも使えます (c=set(s))。
-
PyObject *PyFrozenSet_New(PyObject *iterable)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
iterable が返すオブジェクトを含む新しい
frozensetを返します。 iterable がNULLのときは、空の frozenset を返します。 成功時には新しい set を、失敗時にはNULLを返します。 iterable がイテレート可能でない場合は、TypeErrorを送出します。
以降の関数やマクロは、 set と frozenset とそのサブタイプのインスタンスに対して利用できます。
-
Py_ssize_t PySet_Size(PyObject *anyset)¶
- 次に属します: Stable ABI.
Return the length of a
setorfrozensetobject. Equivalent tolen(anyset). Raises aSystemErrorif anyset is not aset,frozenset, or an instance of a subtype.
-
Py_ssize_t PySet_GET_SIZE(PyObject *anyset)¶
エラーチェックを行わない、
PySet_Size()のマクロ形式。
-
int PySet_Contains(PyObject *anyset, PyObject *key)¶
- 次に属します: Stable ABI.
Return
1if found,0if not found, and-1if an error is encountered. Unlike the Python__contains__()method, this function does not automatically convert unhashable sets into temporary frozensets. Raise aTypeErrorif the key is unhashable. RaiseSystemErrorif anyset is not aset,frozenset, or an instance of a subtype.
-
int PySet_Add(PyObject *set, PyObject *key)¶
- 次に属します: Stable ABI.
setのインスタンスに key を追加します。frozensetに対しても動作します (PyTuple_SetItem()のように、他のコードに見える前の新しい frozenset の値を埋めるために使用できます)。 成功したら0を、失敗したら-1を返します。 key がハッシュ可能でない場合は、TypeErrorを送出します。 set を大きくする余裕がない場合は、MemoryErrorを送出します。 set がsetかそのサブタイプのインスタンスでない場合は、SystemErrorを送出します。
以降の関数は、 set とそのサブタイプに対して利用可能です。 frozenset とそのサブタイプには利用できません。
-
int PySet_Discard(PyObject *set, PyObject *key)¶
- 次に属します: Stable ABI.
Return
1if found and removed,0if not found (no action taken), and-1if an error is encountered. Does not raiseKeyErrorfor missing keys. Raise aTypeErrorif the key is unhashable. Unlike the Pythondiscard()method, this function does not automatically convert unhashable sets into temporary frozensets. RaiseSystemErrorif set is not an instance ofsetor its subtype.
-
PyObject *PySet_Pop(PyObject *set)¶
- 戻り値: 新しい参照。 次に属します: Stable ABI.
set の中の要素のどれかに対する新しい参照を返し、そのオブジェクトを set から削除します。 失敗したら
NULLを返します。 set が空の場合にはKeyErrorを送出します。 set がsetとそのサブタイプのインスタンスでない場合は、SystemErrorを送出します。
-
int PySet_Clear(PyObject *set)¶
- 次に属します: Stable ABI.
Empty an existing set of all elements. Return
0on success. Return-1and raiseSystemErrorif set is not an instance ofsetor its subtype.