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
オブジェクトだがサブタイプのインスタンスでない場合に真を返します。この関数は常に成功します。バージョン 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
set
orfrozenset
object. Equivalent tolen(anyset)
. Raises aSystemError
if 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
1
if found,0
if not found, and-1
if an error is encountered. Unlike the Python__contains__()
method, this function does not automatically convert unhashable sets into temporary frozensets. Raise aTypeError
if the key is unhashable. RaiseSystemError
if 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
1
if found and removed,0
if not found (no action taken), and-1
if an error is encountered. Does not raiseKeyError
for missing keys. Raise aTypeError
if the key is unhashable. Unlike the Pythondiscard()
method, this function does not automatically convert unhashable sets into temporary frozensets. RaiseSystemError
if set is not an instance ofset
or 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
0
on success. Return-1
and raiseSystemError
if set is not an instance ofset
or its subtype.