设置对象¶
本节详细介绍的公共API set
和 frozenset
物体。使用抽象对象协议(包括 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¶
这种subtype
PyObject
用于保存两者的内部数据set
和frozenset
物体。它就像一个PyDictObject
因为它是一个固定大小的小集合(很像元组存储),它将指向一个单独的、可变大小的内存块,用于中型和大型集合(很像列表存储)。此结构的任何字段都不应被视为公共字段,并可能发生更改。所有访问都应该通过文档化的API完成,而不是通过操作结构中的值。
-
PyTypeObject PySet_Type¶
这是一个
PyTypeObject
代表 Pythonset
类型。
-
PyTypeObject PyFrozenSet_Type¶
这是一个
PyTypeObject
代表 Pythonfrozenset
类型。
以下类型检查宏用于指向任何Python对象的指针。同样,构造器函数与任何可ITerable python对象一起工作。
-
int PyAnySet_CheckExact(PyObject *p)¶
如果满足以下条件,则返回TRUE p 是一种
set
对象或一个frozenset
对象,而不是子类型的实例。此功能总是成功的。
-
PyObject *PySet_New(PyObject *iterable)¶
- Return value: New reference.
返回一个新的
set
包含由返回的对象 可迭代的 . 这个 可迭代的 可能是NULL
创建新的空集。成功时返回新集合,或NULL
失败论。提高TypeError
如果 可迭代的 实际上不是不可测的。构造函数对于复制集合也很有用 (c=set(s)
)
-
PyObject *PyFrozenSet_New(PyObject *iterable)¶
- Return value: New reference.
返回一个新的
frozenset
包含由返回的对象 可迭代的 . 这个 可迭代的 可能是NULL
创建新的空冻结集。成功时返回新集合,或NULL
失败论。提高TypeError
如果 可迭代的 实际上不是不可测的。
以下函数和宏可用于 set
或 frozenset
或其子类型的实例。
-
Py_ssize_t PySet_Size(PyObject *anyset)¶
返回a的长度
set
或frozenset
对象。相当于len(anyset)
.提高PyExc_SystemError
如果 任何一组 不是一个set
,frozenset
或子类型的实例。
-
Py_ssize_t PySet_GET_SIZE(PyObject *anyset)¶
宏观形式
PySet_Size()
没有错误检查。
-
int PySet_Contains(PyObject *anyset, PyObject *key)¶
返回
1
如果找到了,0
如果找不到,以及-1
如果遇到错误。与 Python 不同__contains__()
方法,此函数不会自动将不可显示集转换为临时冻结集。举起一个TypeError
如果 key 是不可拆卸的。提高PyExc_SystemError
如果 任何一组 不是一个set
,frozenset
或子类型的实例。
-
int PySet_Add(PyObject *set, PyObject *key)¶
添加 key 到A
set
实例。也与frozenset
实例(类)PyTuple_SetItem()
它可以用来填充全新冻结集的值,然后再将其暴露于其他代码中)。返回0
关于成功还是-1
失败论。举起一个TypeError
如果 key 是不可拆卸的。举起一个MemoryError
如果没有生长的空间。提高SystemError
如果 set 不是的实例set
或其subtype。
以下函数可用于 set
或其子类型,但不适用于 frozenset
或其子类型。
-
int PySet_Discard(PyObject *set, PyObject *key)¶
返回
1
如果找到并移除,0
如果未找到(未采取任何措施),以及-1
如果遇到错误。不提高KeyError
找不到钥匙。举起一个TypeError
如果 key 不可清洗。与 Python 不同discard()
方法,此函数不会自动将不可显示集转换为临时冻结集。提高PyExc_SystemError
如果 set 不是的实例set
或其subtype。